编译后停止和仅检查语法之间的区别
Difference between stopping after compiling and checking for syntax only
当使用gcc或g++时,告诉gcc只编译文件而不链接(-S)与告诉它不生成输出文件(-o " null ")有什么区别:
gcc.exe/g++.exe -S "filename" -o "nul"
…告诉它只检查语法(-fsyntax-only)?
gcc.exe/g++.exe -c "filename" -fsyntax-only
两个选项都不产生输出,只运行编译阶段,并且运行所需的时间大致相同。
我正在使用GCC的Windows端口,它将"null"视为null设备,吃掉所有输出(如/dev/null)。
编辑:正如Mike Seymour指出的,当传递-fsyntax-only给GCC时,它不会尝试执行优化,即使它被告知这样做,这不是-S的情况。换句话说,这更慢(我已经执行了测量):
gcc.exe -S "filename" -o "nul" -O3
…比这个:
gcc.exe -c "filename" -fsyntax-only -O3
第一个以汇编的形式产生输出,因为这是-S
所做的;然后扔掉输出。(假设这就是在你的平台上写"nul"
的意思;我希望它写入一个名为"nul"
的文件。)
结果与第二个类似,但是做了更多的工作(编译和生成程序集),并且没有真正表达检查语法的意图。在代码生成和优化期间的额外静态分析可能会生成额外的警告,这些警告在仅检查语法时可能会被忽略。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- 助记符和指向成员语法的指针
- int(c) 和 c-'0' 之间的区别。C++
- 有人能分解一下这个c++模板的语法吗
- C++避免重复声明的语法是什么
- QMetaObject invokeMethod的基于函数指针的语法
- 在cuda线程之间共享大量常量数据
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 这两种C++语法之间有什么区别?
- 如何避免语法相同的常量和非常量函数之间代码重复,这些函数在语义上不相同
- C++ 中不同指针语法之间的语义差异
- Const引用Visual Studio和GCC之间的语法差异
- C++类和结构之间交互的语法
- 我正在制作语法高亮笔,但在引号之间为文本着色时遇到问题
- 基元类型初始化的构造函数语法和赋值语法之间的差异
- C++:指针语法之间的差异
- 为什么显式专业化和部分专业化之间的语法差异
- 编译后停止和仅检查语法之间的区别
- 调用方法的这三种语法形式之间有什么区别?