问题标签 [compiler-options]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - /Ox 和 /O2 编译器选项有什么区别?
Microsoft 的 C++ 编译器(cl.exe
包含在 Visual Studio 中)提供了几个优化开关。它们中的大多数之间的区别似乎不言自明,但我不清楚/O2
(优化代码以获得最大速度)和/Ox
(选择“完全优化”)之间的区别。
我已经尝试阅读该选项的文档/Ox
,并且似乎确认此开关还可以优化最大速度,而不是大小:
编译器选项生成的
/Ox
代码有利于执行速度而不是较小的大小。
但特别是,“备注”部分下的以下声明引起了我的注意:
通常,指定
/O2
(Maximize Speed) 而不是/Ox
。
所以我的问题是,为什么人们普遍/O2
赞成/Ox
?后一个选项是否启用已知会导致不可预见的错误或其他意外行为的特定优化?仅仅是获得的优化量不值得额外的编译时间吗?或者这只是一个完全没有意义的“建议”,因为它/O2
是VS中的默认选项?
android - -std=gnu++0x 和 -std=c++0x 之间的 GCC 有什么区别,应该使用哪一个?
在 GCC 4.4.3(适用于 Android)中<stdint.h>
使用时遇到问题:-std=c++0x
但使用-std=gnu++0x
作品:
<stdint.h>
与 C++0x 不兼容?
c++ - 编译器开关以禁用 c 样式转换中的 const_cast 语义?
最近我偶然发现了这样的代码:
显然,开发人员不知道他在做什么,但如果编译器没有默默地接受 c-style-cast 并且至少需要一个正确的const_cast
,他可能会在提交之前两次。
所以这让我想到,是否有任何现代编译器有一个开关来防止const_cast
c 样式转换的语义?
阻止所有 c-style-casts 的发生根本不切实际,允许它们static_
和reinterpret_
语义(如果仅适用于某些库代码)是必要的邪恶,但我的印象是,c-style-casts 的合法使用被抛弃constness 在C++代码库中非常罕见,所以也许应该可以完全禁用它?
c - 如何在 gcc 中禁用编译器优化?
我正在努力学习汇编语言。我已经搜索并找到了如何反汇编.c
文件,但我认为它会生成一些优化版本的程序。有什么办法可以让我看到与我的 C 文件相对应的确切汇编代码。
c++ - Visual C++ 编译器优化标志:/O2 和 /Ot 之间的区别
/Ot
标志(“喜欢快速代码”)和/O2
标志(“最大化速度”)有什么区别?
/Os
(与和同上/O1
。)
xcode - Xcode 3.2.5:使“将警告视为错误”和“运行静态分析器”都适用于新项目
问题
每次我在 Xcode 中创建一个新项目时,我都必须转到项目 > 编辑项目设置并导航到将警告视为错误并运行静态分析器以打开它们。对于我的一生,我似乎无法找到从现在开始如何将其设为默认值的方法。
我试过的
通过菜单狩猎。谷歌。Stackoverflow.com。午夜在墓地里献祭动物(好吧,我还没有尝试过,但在此之后它是我名单上的下一个)。
问题
有没有为新项目设置编译器设置的简单方法?
请不要告诉我升级到 Xcode 4。我已经拥有它(并且尚未探索是否可以在其中完成此任务)。我仍然需要 Xcode 3 几个月。
哎呀!差点忘了——提前谢谢!
c++ - g++ 可以检查抛出说明符吗?
关于这个的两个问题:
有没有办法强制
g++
忽略说明throw
符?
(例如,我记得,Visual Studio 忽略了 throw 说明符,不同于throw()
)是否可以强制
g++
检查 throw 说明符是否正确 - 我的意思是检查(这可以通过一次性编译器完成)是否具有 throw 说明符的函数调用函数,这可能只是通过观看他们的 throw说明符并注意执行throw
异常,这会违反说明符吗?(注意:这不应该在没有 throw 说明符的情况下观看函数,因为这可能会导致大量警告)
编辑:我将为我的第二个问题添加一些示例。
假设我们有:
c++ - MS C++ (CL) 编译的可执行文件在 Windows 2000 上不起作用
可能重复:
在 Windows 2000 中使用 Visual Studio 2010 编译的 C++ DLL 时出现问题
与这些问题类似:
我可以将 Visual Studio 2010 的 C++ 编译器与 Visual Studio 2008 的 C++ 运行时库一起使用吗?
VS2010 可以创建在 Windows 2000 下运行的本机可执行文件吗?
我有 C++ 代码,我在 WinXP 机器上使用 VS2010 (CL 版本 16.00.30319.0)从命令行(使用CL.EXE )编译,但我希望生成的本机(x86)可执行程序在 Win2000、WinXP 上运行, ETC。
旧版本的 CL(VC98,版本 12.00.8186)可以很好地完成这项工作,但是 VS2010 版本会生成一个可执行文件,在 Win2000 上运行时会导致弹出错误:
foo.exe不是有效的 Win32 应用程序
解决方案必须采用CL 编译器或链接器选项的形式,而不是 VisualStudio 设置或属性。我不需要任何较新的 C++ 语言功能,因为代码已经有几年历史了,并且可以移植到其他操作系统,而且我只需要本机代码(x86,而不是 .NET 或 CLI)可执行文件。
(有关示例,请参见http://david.tribble.com/src/crlf.cpp和http://david.tribble.com/src/detab.cpp。)
我想我可以在我的新开发环境(WinXP,最终是 Windows 7)上继续使用旧的编译器(VS 9.0),但这似乎不是一个理想的解决方案。当然,MS 仍然提供了一种方法来创建向后兼容旧但仍然存在的 Windows 操作系统的本机可执行文件?
linux - 什么是“Pentium4 及以上”处理器的 gcc 的最佳 March & mtune 选项
我的 C++ 应用程序(使用 g++ 编译)需要在 Pentium-4(32 位)及更高版本上运行。但是,它通常与 Core2Duo 或更好的处理器一起使用。
我目前正在使用:-march=pentium4 -mtune=pentium4。但是一些阅读促使我认为-march=pentium4 -mtune=generic可能会更好。
任何人都可以对此有所了解吗?在这种情况下,march & mtune 选项的最佳值是多少?
平台:RHEL 5.3(32 位)上的 GCC 4.1.2。