Giovanni's Diary > Subjects > Programming > Gists >

C / utils.h

Utility macros for C projects.

// SPDX-License-Identifier: MIT
// Author:  Giovanni Santini
// Mail:    giovanni.santini@proton.me
// Github:  @San7o

#ifndef UTILS_H
#define UTILS_H

#include <stdio.h>
#include <stdlib.h>

//
// Macros
//

#define UNUSED(value) (void)(value)
#define TODO(message) do { fprintf(stderr, "%s:%d: TODO: %s\n", __FILE__, __LINE__, message); abort(); } while(0)
#define UNREACHABLE(message) do { fprintf(stderr, "%s:%d: UNREACHABLE: %s\n", __FILE__, __LINE__, message); abort(); } while(0)

#define cleanup_free __attribute__ ((cleanup (cleanup_freep)))

#ifdef __GNUC__
  #define LIKELY(x)     __builtin_expect(!!(x), 1)
  #define UNLIKELY(x)   __builtin_expect(!!(x), 0)
#else
 #define LIKELY(x)     (x)
 #define UNLIKELY(x)   (x)
#endif

//
// Functions
//

static inline void cleanup_freep(void *p) {
    free(*(void **)p);
}

#endif // UTILS_H

Travel: Gists, Index