Orw*_*ell 2 c c++ gcc g++ syntax-checking
当使用gcc或g ++时,告诉GCC只编译文件而不是链接(-S),并告诉它不生成输出文件(-o"nul")之间有什么区别:
gcc.exe/g++.exe -S "filename" -o "nul"
Run Code Online (Sandbox Code Playgroud)
...并告诉它只检查语法(-fsyntax-only)?
gcc.exe/g++.exe -c "filename" -fsyntax-only
Run Code Online (Sandbox Code Playgroud)
这两个选项都不会产生输出,只运行编译阶段,并且需要大约相同的时间才能运行.
我正在使用GCC的Windows端口,它将"nul"视为占用所有输出的空设备(如/ dev/null).
编辑:正如Mike Seymour所指出的,当将-fsyntax-only传递给GCC时,即使被告知这样做也不会尝试执行优化,这与-S不同.换句话说,这是较慢的(我已经执行了测量):
gcc.exe -S "filename" -o "nul" -O3
Run Code Online (Sandbox Code Playgroud)
... 比这个:
gcc.exe -c "filename" -fsyntax-only -O3
Run Code Online (Sandbox Code Playgroud)
第一个确实以装配的形式产生输出,因为这是做什么的-S; 然后你扔掉输出.(假设这是"nul"你平台上的写法意思;我原本希望它写入一个名为的文件"nul".)
结果类似于第二个,但更多的工作(编译和生成程序集),并没有真正表达检查语法的意图.代码生成和优化期间的额外静态分析可能会产生额外的警告,仅在检查语法时会丢失.
| 归档时间: |
|
| 查看次数: |
419 次 |
| 最近记录: |