如何使用-D选项将参数处的字符串化宏传递给gcc
我正在使用以下命令编译以下代码:如何使用-D选项将参数处的字符串化宏传递给gcc,c,C,我正在使用以下命令编译以下代码:gcc test.c-D HEX=0xFFFF #include <stdio.h> #define NOERR 0 #define ERR 1 /* * Some Code */ main() { printf(#HEX); } 出现错误是因为#运算符只能在预处理器指令中使用 您需要对宏进行字符串化。字符串化需要两级宏: #define STRINGIFY_(x) #x #define STRINGIFY(x) STRINGI
gcc test.c-D HEX=0xFFFF
#include <stdio.h>
#define NOERR 0
#define ERR 1
/*
* Some Code
*/
main()
{
printf(#HEX);
}
出现错误是因为
#
运算符只能在预处理器指令中使用
您需要对宏进行字符串化。字符串化需要两级宏:
#define STRINGIFY_(x) #x
#define STRINGIFY(x) STRINGIFY_(x)
printf(STRINGIFY(HEX));
您的错误是使用
printf()
的错误方法,并且您不能定义以“#”开头的变量:
#define STRINGIFY_(x) #x
#define STRINGIFY(x) STRINGIFY_(x)
printf(STRINGIFY(HEX));
#include <stdio.h>
#define NOERR 0
#define ERR 1
/*
* Some Code
*/
int main()
{
printf("%d",HEX);
return 0;
}
zookeepdeMacBook-Pro:Desktop zookeep$ gcc hello.c -D HEX=0xFFFF -o hello
zookeepdeMacBook-Pro:Desktop zookeep$ ./hello
65535