大佬教程收集整理的这篇文章主要介绍了为什么我们不能使用预处理器来创建自定义分解字符串?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
#define STR_START " #define STR_END " int puts(const char *); int main() { puts(STR_START Hello world STR_END); }
当我使用gcc编译它(注意:与clang类似的错误),它失败,与这些错误:
$gcc test.c test.c:1:19: warning: missing terminaTing " character test.c:2:17: warning: missing terminaTing " character test.c: In function ‘main’: test.c:7: error: missing terminaTing " character test.c:7: error: ‘Hello’ undeclared (first use in this function) test.c:7: error: (Each undeclared identifier is reported only once test.c:7: error: for each function it appears in.) test.c:7: error: expected ‘)’ before ‘world’ test.c:7: error: missing terminaTing " character
有什么困惑我,所以我通过预处理器运行:
$gcc -E test.c # 1 "test.c" # 1 "" # 1 "" # 1 "test.c" test.c:1:19: warning: missing terminaTing " character test.c:2:17: warning: missing terminaTing " character int puts(const char *); int main() { puts(" Hello world "); }
如果,C中的宏只是一个文本替换,为什么我的初始例子会失败?这是编译器的错误吗?如果没有,在标准中哪里有与这种情况有关的信息?
注意:我不是在寻找如何使我的初始代码段编译.我只是想了解为什么这种情况失败的信息.
以上是大佬教程为你收集整理的为什么我们不能使用预处理器来创建自定义分解字符串?全部内容,希望文章能够帮你解决为什么我们不能使用预处理器来创建自定义分解字符串?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。