#define GCC_VERSION (__GNUC__ * 10000 + \ __GNUC_MINOR__ * 100 + \ __GNUC_PATCHLEVEL__) #if GCC_VERSION < 40900 #error Your GCC version is too old, please switch to >= 4.9 #endif // Generic wrapper macro for the various dict_write_* functions // Can be used with gcc >= 4.9 and --std=c11 flag #define dict_write_value(iter, key, value, ...) _Generic((value), \ uint8_t: dict_write_uint8, \ uint16_t: dict_write_uint16, \ uint32_t: dict_write_uint32, \ unsigned: dict_write_uint32, \ int8_t: dict_write_int8, \ int16_t: dict_write_int16, \ int32_t: dict_write_int32, \ int: dict_write_int32, \ char*: dict_write_cstring, \ uint8_t*: dict_write_data \ )(iter, key, value, ## __VA_ARGS__)