Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C预处理器中循环遍历头文件_C_Header_C Preprocessor_Undef - Fatal编程技术网

在C预处理器中循环遍历头文件

在C预处理器中循环遍历头文件,c,header,c-preprocessor,undef,C,Header,C Preprocessor,Undef,是否有一种方法可以循环遍历所有包含/定义的头文件,然后#unde所有头文件 如果存在循环问题,是否有其他方法可以轻松地#undef所有这些问题?GNU cpp提供了一个-dM指令,您可以列出所有定义: gcc-E-dM-c foo.c 然后,您可以使用sed脚本在命令行上取消对它们的定义:) gcc-E-c foo.c | sed's/#define/#unde/# 或者做任何事 玩得开心:)你的意思是#undef标题保护,而不是标题本身,对吗?我的意思是取消定义所有已定义的内容,如果这是你的意

是否有一种方法可以循环遍历所有包含/定义的头文件,然后
#unde
所有头文件


如果存在循环问题,是否有其他方法可以轻松地
#undef
所有这些问题?

GNU cpp提供了一个-dM指令,您可以列出所有定义:

gcc-E-dM-c foo.c

然后,您可以使用sed脚本在命令行上取消对它们的定义:)

gcc-E-c foo.c | sed's/#define/#unde/#

或者做任何事


玩得开心:)

你的意思是
#undef
标题保护,而不是标题本身,对吗?我的意思是取消定义所有已定义的内容,如果这是你的意思,那么是的:p然后我的答案是:不在标准C中,但可能有编译器特定的指令。我可以问你为什么要这么做吗?顺便说一句,你可以设置你的构建过程,在C预处理器开始之前使用另一个程序来预处理你的源文件,如果我真的需要的话,我会这么做feature@PeterT与某人发生关系:)有没有办法从程序内部做到这一点呢?这是编译时的东西,对吧。。。这样做,并创建一个.h文件:)将其包含在您的程序中,瞧,偷偷摸摸:)谢谢!请参阅程序员的一些恶意漏洞(模仿一位母亲的XKCD漏洞),并参阅top post和Python post)Hillary:)。。。我想如果你1)导出CPATH=-i/some/path/with/skilly/includes和2)某处/etc/bashrc或~/.bashrc put
别名集,你会有更多的乐趣=“设置| sed-e'/CPATH/s,:*/some/path/with/skilly/includes:*,,g'-e的/::::*/:/g'
,然后看着他们挣扎:)请给我写一点,我会把它包括在内,并把你作为特邀作者!发电子邮件给我tekknolagi@gmail.com