想象一下:
#define PUTVALUE 0x000000000000000F
#define SetStr(s) literate(s)
#define literate(s) #s
...
foo (PUTVALUE, SetStr(PUTVALUE));
我如何才能做到这一点,其中
foo
希望第一个参数是64位整数,第二个参数是一个常量字符串,该字符串的十六进制表示形式带有前导0x
。所以我不能:
#define PUTVALUE 0x000000000000000Full
因为这会破坏第二个参数。
但不这样做就是打破第一个。
最佳答案
哦,我想出了一个很棒的办法:
foo (INT64_C(PUTVALUE), SetStr(PUTVALUE));
就是在做那个工作。
关于c - 如何使64位预处理器定义的常量在没有警告的情况下进行编译?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25766279/