我想用不同的名称编译一个c程序。在主文件中,我有以下宏:
#ifndef EXECUTABLE_NAME
#define EXECUTABLE_NAME "defaultname"
#endif
使用 gcc 编译时,我使用 -D
开关来定义此宏(这是正确的术语吗?):
$ gcc main.c -DEXECUTABLE_NAME="newname"
我不知道 -D 是否正常工作,因为当我尝试执行下面的代码之类的操作时...它失败了...我无法判断 -D 开关是否搞砸了或者语法是否搞砸了在 printf()
函数中使用宏不正确:
printf("no or invalid arguments. usage: %s [0,255]\n", EXECUTABLE_NAME);
我收到此错误:
main.c:48:57: note: in expansion of macro ‘EXECUTABLE_NAME’
printf("no or invalid arguments. usage: %s [0,255]\n", EXECUTABLE_NAME);
有什么建议吗?
最佳答案
它有效,您可以看到因为的错误。顺便说一句,这是因为您在命令行上定义了错误的宏,这就是您在宏中引用字符串的方式:
$ gcc main.c -DEXECUTABLE_NAME='"newname"'
这就是说,甚至不需要。可执行路径始终是您的第一个参数:*argv
。
关于c - 在 printf 函数内扩展动态宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33161710/