我正在使用一个库,它定义了如下的常量:
#define SOME_BIG_CONSTANT 0x0000000100000000
这个字面量太大了,无法用long
表示,所以使用这个宏的任何程序都无法编译(使用gcc 4.1.2 for VxWorks)。解决方法是在字面量后添加后缀ull
,虽然这种方式不标准,但该编译器支持。
#define SOME_BIG_CONSTANT 0x0000000100000000ull
然而,这需要我修改库头文件,我不想这样做。我对宏一窍不通,所以我的问题是,如何定义一个宏来添加后缀,我可以像这样调用它:
ULL_(SOME_BIG_CONSTANT)
这将会扩展为:
0x0000000100000000ull
ull
后缀时,应该是unsigned long long a
,不是吗? - unwind