2016-06-06 79 views
1

我正在学习C++,所以我宁愿编译器没有任何优化,看看事情如何工作(是的,我的意思是复制elision)。我使用的是xCode,所以问题是什么标志以及在哪里设置它们以优化整个项目以禁用优化?禁用C++优化

+0

[XCode 4 - 发布模式标志,构建标志,链接标志]的可能重复(http://stackoverflow.com/questions/15731896/xcode-4-release-mode-flags-build-flags-link-flags ) 这不完全相同的问题,但发现它与一个简单的谷歌搜索,并有一个答案,适用于这个问题。 – Savvas

+0

即使在调试模式下,大多数合理的编译器也会应用copy elision!主要原因是代码在经过优化的版本和调试版本之间不应该有不同的表现,并且在优化的版本中完成复制elision。虽然['gcc'](http://gcc.gnu.org)有'-fno-elide-constructors',但我没有发现任何类似['clang']的东西(http://clang.llvm.org )。然而,就我所知,后者被XCode使用。 –

+0

我使用了-fno-elide-constructors标志,它工作正常。事情是我把它设置为Main.cpp中的构建阶段 - >编译源文件的基础上。其他cpp文件不会继承该标志。无论如何,它至少适用于我明确添加到列表中的文件。 –

回答