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