没有编译的gcc打印警告

ead*_*ter 2 gcc lint

我希望gcc对错误进行源代码分析,但不要写任何输出文件(类似于splint的作用).我目前找到了这个解决方案:

gcc -Wall -c source.c > NUL
Run Code Online (Sandbox Code Playgroud)

osg*_*sgx 7

-fsyntax-only选项,这意味着你想要的:

"检查代码是否存在语法错误,但除此之外不要做任何事情."

此选项在操作系统之间比在使用/dev/nullNUL输出时更容易移植.

clang C/C++/ObjC前端也支持此选项,它与LLVM一起使用:clang-3.1 -fsyntax-only.

更新:但您应该知道某些警告不是由语法分析器生成的,而是由内部编译器阶段生成的.例如,语法分析器无法检测完整控制流(仅优化器将),并且-fsyntax-only选项中将不会生成一些警告,如"控制到达非空函数的结尾" .


dpp*_*dpp 5

好吧,你可以将输出重定向到/dev/null

gcc -o /dev/null ...
Run Code Online (Sandbox Code Playgroud)