我想运行以下代码
gcc -M [file]
但是,如果我包含_ FILE _,如下所示,则会出现错误。
#include <stdio.h>
#include __FILE__
int main(int argc, char* argv[]) {
printf("Hello, world!\n");
return 0;
}
所以
有没有办法运行gcc -M
而忽略某些语法?
答案 0 :(得分:2)
字面上问的问题的答案是:不。 GCC无法禁用由无条件#include __FILE__
触发的错误,也无法禁用其他几个相关的错误类别,例如当头文件丢失或无法访问时获得的错误。
IDE不需要对这些情况做任何特别优雅的事情,因为它们不会出现在执行任何有用的代码中。只需将错误消息公开给用户即可。 (你可以合理地省去在实际错误之前的200行“from test.c:2:”。)
(如果任何人在阅读此内容时都不清楚#include __FILE__
做了什么,它会导致预处理器从头开始重新读取包含该语句的文件,作为嵌套的include;在没有任何其他机制的情况下,把它放到一个无限递归中,GCC在200的“arbitrary limit”中切断了深度。)