【发布时间】:2020-05-16 02:01:21
【问题描述】:
构建系统无法弄清楚,尽管可以配置一个额外的标志:在尝试做一些快速和肮脏的测试时,我可以注入一个额外的 -O3 标志来查看程序的性能处于 -O3 优化之下。
然而,-O2 也被指定,并且在之后被指定。
问题是,编译器是否明确定义只有最后一个优化标志会保留?或者它(我希望)会采用最高指定的优化级别吗?还是未定义?这绝对不是抱怨或出错,这是肯定的。
【问题讨论】:
-
C++ 编程语言中没有指定编译器在这方面的行为。除非在编译器的文档中明确记录了这一点,否则您唯一能做的就是通过编写一些根据优化级别生成不同程序集的代码自己弄清楚,然后尝试多个优化级别选项并查看哪个版本出来。不应该是一个困难的实验。
-
-O<something>可能会导致编译失败。没有统一的“编译这个c++程序”界面。