禁用g++的返回值优化

63

我需要在命令行上添加哪些标志来禁用g++编译器自动启用的返回值优化?


2
给出一个代码示例,并解释为什么不希望进行这种优化。 - fge
2
@fge 我正在调试和测试我的软件库实现,因此我更喜欢在软件执行过程中看到每一步。 - cpp_noname
6
当然,你应该意识到很多人会使用构造函数省略来调用你的库,因此你需要在这种配置下进行测试。 - Matthieu M.
4
@Matthieu M,感谢您的提醒。 - cpp_noname
1个回答

109

-fno-elide-constructors

C++标准允许实现省略创建临时对象,该对象仅用于初始化同类型的另一个对象。启用此选项将禁用该优化,并强制G ++在所有情况下调用复制构造函数。【来源:man gcc】



2
离题:可能有人会节省一些时间,注意到clang [我的--version是Apple clang version 4.1 (tags/Apple/clang-421.11.66) (based on LLVM 3.1svn)]在使用这个标志时有一个bug,在我的情况下似乎会产生seg faults: http://llvm.org/bugs/show_bug.cgi?id=12208 - Patrick Sanan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接