问题标签 [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++ - Microsoft Visual Studio 中编译选项 /DPROFILE 和 /UPROFILE 的含义是什么?
有遗留的原生 c++ 项目。在命令行属性页中,/DPROFILE 作为附加选项添加。我想删除它。但我不知道它是否安全。我到处搜索。不幸的是,我没有找到关于 /DPROFILE 和 /UPROFILE 的解释。MSDN 有人知道关于他们的页面吗?它们是用来做什么的?
debugging - 当 NaN 仅在使用优化编译时出现时,如何开始调试数字代码?
在以下情况下,开始调试数字代码的一般策略是什么:
- 使用积极优化标志编译的代码,在输出中产生偶尔的 NaN 和 Inf
-g
用(这意味着)编译的代码-O0
与调试器一起运行,不再产生 NaN 和 Inf 了?
在这种情况下,我使用的是 Portland Group C++ 编译器 pgCC,并使用了优化选项
-w -fast -O3 -Mipa=fast -Mfprelaxed -Minline=levels:10
然后就
-w -g
对于调试版本。但我相信类似的情况也可能发生g++
。
编辑:添加打印语句不是一个非常诱人的选项,因为代码不是我写的,它有几千行大,我不知道缩小搜索范围;NaN 可能几乎来自任何地方。
visual-studio - '/fp:fast' 和 '/Za' 不兼容 Visual C++
我在 Visual 2008 SP1 中遇到问题。
编译器产生:
'/fp:fast' 和 '/Za' 不兼容
问题是我没有在属性中使用 /Za .. 所以我不明白为什么在未设置选项时会发生冲突。
这是我的项目属性中生成的命令行:
如您所见,设置了 /fp:fast 但未设置 /Za。
是否有另一种可能间接引用 /Za 的选项?
在深入挖掘之后,我意识到 BuildLog.htm 文件在说:
您知道为什么会创建第二个临时文件吗?我的项目中是否有我必须修复的属性?
[编辑] 感谢汉斯,我找到了问题所在。我在项目中的一个文件有一个不同的编译器选项,我不知道是哪个导致了问题。由于 buildlog.htm 文件,我找到了它是哪一个
c++ - g ++从具有模板参数的类派生
考虑以下代码:
在用“受影响的行”注释的行中,g++ (4.7) 说:
现在我想知道:
- 如果模板参数 T 不存在,则不会发生此错误。有什么不同?
- g++ 显然能够解决这个问题(如果我添加 -fpermissive 它编译得很好)。我假设 g++ 试图为我作为“用户”(程序员)提供最佳体验。当 g++ 不接受此代码时,对我有什么好处?
谢谢!弥敦道
c - 为内联汇编参数打开立即值传播的特定 GCC 标志是什么?
考虑以下 x86 代码示例:
如果我用以下方式构建它:
它构建良好。
如果我用(没有优化)构建它:
它在组装阶段失败,因为该值'5'
没有作为立即值传播到内联函数测试,所以我们没有通过约束。
我希望能够在不打开其他无关优化的情况下编译此代码,以使调试更容易。
从理论上讲,-O
这只是一次启用大量 GCC 优化选项的捷径,这些选项记录在精美的 GCC 手册中。不幸的是,我找不到打开此行为的特定 GCC 标志。
有任何想法吗?
澄清:为了消除任何疑问,代码片段只是一个示例。除了展示我正在尝试做的事情之外,它本身并没有多大意义。实际用例涉及自定义处理器上的指令,该指令只能将立即数作为参数,我试图将其包装在 C 构造中。宏确实可以解决问题,但会遇到宏的所有常见缺点,因此我试图避免它。
更新:对于那些想知道的人,宏也不起作用。看来内联函数在这里根本不起作用。例如,这也不起作用:
我还修复了问题标题以反映这一点。
ibm-midrange - 如何为 RPG 或 CL 程序中的激活组设置编译器选项?
有没有办法为程序源指定,在编译期间应该使用哪些激活组选项?
在我们在 as/400 上的大多数程序中,我们需要更改激活组的处理方式(因为默认行为根本没有用......)。每次编译其中一个程序时,我都必须记住设置编译器选项(在 PDM 中: enter 14
、 hit F4
、 change DFTACTGRP
from *YES
to *NO
、 hit enter
、 change ACTGRP
to *NEW
or *CALLER
,具体取决于程序)。所以我们有很多程序开头都有注释,有大量的感叹号,提醒程序员这样做。是的,有时你会忘记。
有什么诀窍,让你不必记住自己吗?
c++ - C++ 中将默认变量类型设置为 int 的任何选项
是否有任何选项可以省略变量类型或将变量类型设置为 int
在 linux 中使用 g++ 编译器编译的 c++ 代码。
在 solaris 中编译很顺利(因为我正在从 solaris 移植到 linux)。
还有一件事,我无法控制文件,因为它是由某些解析器生成的(由某些第三方以二进制形式提供)
由于我无法更改 c++ 文件(因为它是在每次编译前生成的),我需要一些(g++ 的)选项,因此我可以在编译期间包含以抑制/解决错误:
编辑 :
信息:我目前正在使用的选项-c -fPIC -Wno-deprecated -m32 -O2 -ffriend-injection -g
是否有任何选项给我带来麻烦(或影响其他人)?
提前致谢
c++ - Visual Studio 中的“创建预编译头文件”(/Yc)和“使用预编译头文件”(/Yu)有什么区别?
我阅读了 MSDN 中的文档,但最后我并不清楚它们之间的实际区别是什么。两者似乎都需要将 stdafx.h 添加到每个 *.cpp 文件的顶部。
我正在使用VS2008。
任何人都可以帮助解决问题吗?
visual-studio - 从命令行抑制 PDB 生成 - C++
我进行了搜索,可以找到一些使用 Visual Studio 菜单来禁止创建 PDB 文件的示例。我需要为我正在构建的项目执行此操作,但是,这仅需要从命令行使用 Visual Studio 编译器。是否有用于禁用 PDB 生成的命令行开关?