使用 gcc 或 g++ 时,告诉 GCC 只编译文件而不是链接 (-S) 与告诉它不生成输出文件 (-o "nul") 有什么区别:
gcc.exe/g++.exe -S "filename" -o "nul"
...并告诉它只检查语法(-fsyntax-only)?
gcc.exe/g++.exe -c "filename" -fsyntax-only
这两个选项都不会产生输出,只运行编译阶段,运行时间大致相同。
我正在使用 GCC 的 Windows 端口,它将“nul”视为吃掉所有输出的空设备(如 /dev/null)。
编辑:正如 Mike Seymour 指出的那样,当将 -fsyntax-only 传递给 GCC 时,即使被告知这样做,它也不会尝试执行优化,而 -S 不是这种情况。换句话说,这比较慢(我已经进行了测量):
gcc.exe -S "filename" -o "nul" -O3
... 比这个:
gcc.exe -c "filename" -fsyntax-only -O3