想象一下:
#define PUTVALUE 0x000000000000000F
#define SetStr(s) literate(s)
#define literate(s) #s
...
foo (PUTVALUE, SetStr(PUTVALUE));
我如何才能完成这项工作,其中foo
希望第一个参数是64位整数,第二个参数是一个带有前导0x
的整数十六进制表示的const字符串。
所以我不能这样做:
#define PUTVALUE 0x000000000000000Full
因为这会打破第二个参数。
但不这样做是打破第一个。
答案 0 :(得分:1)
哦,我想出了一个很棒的方法:
foo (INT64_C(PUTVALUE), SetStr(PUTVALUE));
正在完成那项工作。