问题标签 [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.

0 投票
2 回答
171 浏览

c++ - Microsoft Visual Studio 中编译选项 /DPROFILE 和 /UPROFILE 的含义是什么?

有遗留的原生 c++ 项目。在命令行属性页中,/DPROFILE 作为附加选项添加。我想删除它。但我不知道它是否安全。我到处搜索。不幸的是,我没有找到关于 /DPROFILE 和 /UPROFILE 的解释。MSDN 有人知道关于他们的页面吗?它们是用来做什么的?

0 投票
3 回答
349 浏览

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 可能几乎来自任何地方。

0 投票
3 回答
540 浏览

visual-studio - '/fp:fast' 和 '/Za' 不兼容 Visual C++

我在 Visual 2008 SP1 中遇到问题。

编译器产生:

'/fp:fast' 和 '/Za' 不兼容

问题是我没有在属性中使用 /Za .. 所以我不明白为什么在未设置选项时会发生冲突。

这是我的项目属性中生成的命令行:

如您所见,设置了 /fp:fast 但未设置 /Za。

是否有另一种可能间接引用 /Za 的选项?

在深入挖掘之后,我意识到 BuildLog.htm 文件在说:

您知道为什么会创建第二个临时文件吗?我的项目中是否有我必须修复的属性?

[编辑] 感谢汉斯,我找到了问题所在。我在项目中的一个文件有一个不同的编译器选项,我不知道是哪个导致了问题。由于 buildlog.htm 文件,我找到了它是哪一个

0 投票
2 回答
746 浏览

c++ - g ++从具有模板参数的类派生

考虑以下代码:

在用“受影响的行”注释的行中,g++ (4.7) 说:

现在我想知道:

  • 如果模板参数 T 不存在,则不会发生此错误。有什么不同?
  • g++ 显然能够解决这个问题(如果我添加 -fpermissive 它编译得很好)。我假设 g++ 试图为我作为“用户”(程序员)提供最佳体验。当 g++ 不接受此代码时,对我有什么好处?

谢谢!弥敦道

0 投票
3 回答
3408 浏览

c - 为内联汇编参数打开立即值传播的特定 GCC 标志是什么?

考虑以下 x86 代码示例:

如果我用以下方式构建它:

它构建良好。

如果我用(没有优化)构建它:

它在组装阶段失败,因为该值'5'没有作为立即值传播到内联函数测试,所以我们没有通过约束。

我希望能够在不打开其他无关优化的情况下编译此代码,以使调试更容易。

从理论上讲,-O这只是一次启用大量 GCC 优化选项的捷径,这些选项记录在精美的 GCC 手册中。不幸的是,我找不到打开此行为的特定 GCC 标志。

有任何想法吗?

澄清:为了消除任何疑问,代码片段只是一个示例。除了展示我正在尝试做的事情之外,它本身并没有多大意义。实际用例涉及自定义处理器上的指令,该指令只能将立即数作为参数,我试图将其包装在 C 构造中。宏确实可以解决问题,但会遇到宏的所有常见缺点,因此我试图避免它。

更新:对于那些想知道的人,宏也不起作用。看来内联函数在这里根本不起作用。例如,这也不起作用:

我还修复了问题标题以反映这一点。

0 投票
3 回答
5244 浏览

ibm-midrange - 如何为 RPG 或 CL 程序中的激活组设置编译器选项?

有没有办法为程序源指定,在编译期间应该使用哪些激活组选项?

在我们在 as/400 上的大多数程序中,我们需要更改激活组的处理方式(因为默认行为根本没有用......)。每次编译其中一个程序时,我都必须记住设置编译器选项(在 PDM 中: enter 14、 hit F4、 change DFTACTGRPfrom *YESto *NO、 hit enter、 change ACTGRPto *NEWor *CALLER,具体取决于程序)。所以我们有很多程序开头都有注释,有大量的感叹号,提醒程序员这样做。是的,有时你会忘记。

有什么诀窍,让你不必记住自己吗?

0 投票
2 回答
713 浏览

c++ - C++ 中将默认变量类型设置为 int 的任何选项

是否有任何选项可以省略变量类型将变量类型设置为 int在 linux 中使用 g++ 编译器编译的 c++ 代码。

在 solaris 中编译很顺利(因为我正在从 solaris 移植到 linux)。

还有一件事,我无法控制文件,因为它是由某些解析器生成的(由某些第三方以二进制形式提供)

由于我无法更改 c++ 文件(因为它是在每次编译前生成的),我需要一些(g++ 的)选项,因此我可以在编译期间包含以抑制/解决错误:


编辑 :

信息:我目前正在使用的选项-c -fPIC -Wno-deprecated -m32 -O2 -ffriend-injection -g

是否有任何选项给我带来麻烦(或影响其他人)?


提前致谢

0 投票
2 回答
6277 浏览

c++ - Visual Studio 中的“创建预编译头文件”(/Yc)和“使用预编译头文件”(/Yu)有什么区别?

我阅读了 MSDN 中的文档,但最后我并不清楚它们之间的实际区别是什么。两者似乎都需要将 stdafx.h 添加到每个 *.cpp 文件的顶部。

我正在使用VS2008。

任何人都可以帮助解决问题吗?

0 投票
1 回答
1846 浏览

c++ - 使用 /O2 与 /Ox 进行编译——哪个更快(根据经验)?

这个问题MSDN似乎暗示 /O2 会更快,但是如果您查看 Microsoft 自己的SafeInt类,您会注意到它说:

1)编译优化代码 -/Ox最好,/O2也表现良好。有趣/O1 的是,(优化大小)也不起作用。

如果差异真的/GF /Gy像上面的问题所说的那样,那么就我想像的那样/GF,(字符串池)和/Gy(省略帧指针)不会真正伤害到你。

有什么我想念的吗?/Ox一般更快吗?为什么或者为什么不?

0 投票
1 回答
1081 浏览

visual-studio - 从命令行抑制 PDB 生成 - C++

我进行了搜索,可以找到一些使用 Visual Studio 菜单来禁止创建 PDB 文件的示例。我需要为我正在构建的项目执行此操作,但是,这仅需要从命令行使用 Visual Studio 编译器。是否有用于禁用 PDB 生成的命令行开关?