如何使用-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