我希望gcc对错误进行源代码分析,但不要写任何输出文件(类似于splint的作用).我目前找到了这个解决方案:
gcc -Wall -c source.c > NUL
Run Code Online (Sandbox Code Playgroud)
有-fsyntax-only选项,这意味着你想要的:
"检查代码是否存在语法错误,但除此之外不要做任何事情."
此选项在操作系统之间比在使用/dev/null或NUL输出时更容易移植.
clang C/C++/ObjC前端也支持此选项,它与LLVM一起使用:clang-3.1 -fsyntax-only.
更新:但您应该知道某些警告不是由语法分析器生成的,而是由内部编译器阶段生成的.例如,语法分析器无法检测完整控制流(仅优化器将),并且-fsyntax-only选项中将不会生成一些警告,如"控制到达非空函数的结尾" .