如何在没有警告的情况下使64位预处理器定义为常量编译?

时间:2014-09-10 13:07:46

标签: c macros

想象一下:

#define PUTVALUE 0x000000000000000F
#define SetStr(s) literate(s)
#define literate(s) #s

...

foo (PUTVALUE, SetStr(PUTVALUE));

我如何才能完成这项工作,其中foo希望第一个参数是64位整数,第二个参数是一个带有前导0x的整数十六进制表示的const字符串。

所以我不能这样做:

#define PUTVALUE 0x000000000000000Full

因为这会打破第二个参数。

但不这样做是打破第一个。

1 个答案:

答案 0 :(得分:1)

哦,我想出了一个很棒的方法:

foo (INT64_C(PUTVALUE), SetStr(PUTVALUE));

正在完成那项工作。