#include #include #include #include #if 1 #define X 0xff00000000000000 #else #define X x #endif int main (int argc, char *argv[]) { uint32_t x = 0; if (__builtin_types_compatible_p (typeof (X), int)) printf("type: int\n"); else if (__builtin_types_compatible_p (typeof (X), unsigned int)) printf("type: unsigned int\n"); else if (__builtin_types_compatible_p (typeof (X), long)) printf("type: long\n"); else if (__builtin_types_compatible_p (typeof (X), unsigned long)) printf("type: unsigned long\n"); else if (__builtin_types_compatible_p (typeof (X), long long)) printf("type: long long\n"); else if (__builtin_types_compatible_p (typeof (X), unsigned long long)) printf("type: unsigned long long\n"); else printf("type: unknown\n"); (void) x; return 0; }