问题标签 [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 投票
1 回答
2677 浏览

c++ - 我如何理解 fdump-class-hierarchy 输出

我正在使用 fdump-class-hierarchy 编译器选项,但我不知道如何理解输出。“size”、“align”、“base size”和“base align”是什么意思,如何计算?谢谢!

当代码是:

输出是:

但是,如果我稍微改变一下课程:

输出将是:

0 投票
1 回答
88 浏览

visual-c++ - 如何在编译时验证 msvc 2010 c++ 项目中的编译器选项是否已正确设置?

我一直在玩 PDCurses 并且遇到了一些问题。最终我来到这里解决了我的问题。

基本上我的 PDCurses 项目是使用 UNICODE CHARACTER 集编译的。结果,块字符显示为大写 U。将库设置为 NOT SET 作为字符集解决了这个问题。

是否有一种技术可以让我在 PDCurses 的源代码中嵌入一些东西,以检测选择了哪个字符集选项,如果设置不正确,则执行编译时断言?

我查看了编译指示列表。一致性选项和运行时检查似乎做了类似的事情。

0 投票
1 回答
10738 浏览

macos - 在 OS X 上使用 Clang 编译时如何增加堆栈大小?

我可以用 clang++ 指定堆栈大小吗?我找不到任何允许我这样做的编译器选项。我正在使用 OS X。

注意:这个问题专门针对 Clang,而不是 GCC 编译器。

0 投票
1 回答
1524 浏览

java - Javac:无需注释即可编译的选项

javac是否有编译器选项可以在没有注释的情况下进行编译?

我知道:

  • -nowarn: 不显示警告
  • -g:none:不生成调试信息

仍然会使用这两种方法生成注释。是否也有不生成注释的编译器选项?

“注释”是指编译器输出,例如:

我用javac 1.7.0_40.

0 投票
3 回答
5415 浏览

c++ - GCC pragma 在源文件中添加/删除编译器选项

我开发了一个跨平台库,它在套接字通信中公平地使用类型双关语。这个库已经在许多项目中使用,其中一些我可能不知道。

错误地使用这个库会导致危险的未定义行为。我想尽我所能确保这个库被正确使用。

当然,除了文档之外,在 G++ 下,我知道的最好的方法是使用-fstrict_aliasingand-Wstrict-aliasing选项。

在 GCC 下有没有办法在源文件级别应用这些选项?

换句话说,我想写如下内容:

MyFancyLib.h

有办法吗?

0 投票
3 回答
8358 浏览

c - 哪些 gcc 选项可以减少代码大小?

我受到嵌入式 PowerPC 系统 128Kb 可执行文件大小的限制。不幸的是,由于我认为是编译器错误(由于未定义的引用和类似原因导致-Os链接失败),使用优化大小的选项不起作用,而所有链接都很好。这是 gcc 4.8.1 host=i86, target=powerpc-wrs-vxworks。-Os_restgpr_30_x-O[123]

我的下一个想法是有选择地使用各种优化选项。但是这些选项中的哪一个会减少代码大小而不是执行时间?我继续单独使用一些选项,发现 -O2 除了

使用时减少代码大小。还有比实验更系统的方法吗?GCC 文档描述了各种选项,但没有说明它们是否更适合执行时间加速或代码大小减少。

0 投票
1 回答
180 浏览

clr - 发布配置的运行时库(静态库)

我在网上看过,有点明白,但想问一下以确定。

我将本机 c++ 包装器转换为 c++/CLI 项目,以便 VB.NET “看到”

我转换后的项目依赖于一个 fortran 静态库。

在调试配置中,我的 C++/CLI 项目使用多线程调试 DLL (/MDd),我的 fortran 静态库使用调试多线程 DLL (/libs:dll /threads /dbglibs)。我可以很好地编译。

在发布配置中,我有一些问题。我的 C++/CLI 项目使用多线程 DLL (/MD),我的 fortran 静态库使用多线程 DLL。这会导致一堆未解析的令牌(如unresolved token "extern "C" void __cdecl __CxxUnregisterExceptionObject(void *,int)"

如果我将 fortran 静态库更改为使用调试多线程 DLL,它工作正常。

我的问题:让 fortran 静态库在发布配置中使用调试多线程 DLL 是否不好?我认为调试开关应该只在调试配置中使用,但我不知道如何摆脱错误,否则......

0 投票
2 回答
30358 浏览

c++ - 如何禁用缩小转换警告?

我使用-Wall并更新到新的 gcc 我有很多warning: narrowing conversion. 我想禁用它们,但保持所有其他警告不变(理想情况下)。

narrowing我在http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html中什么也找不到

如何禁用缩小转换警告?有可能吗?

附言

  1. 我需要禁用警告,而不是在源代码中修复它们。

  2. 瞎了-Wno-conversion也没用。

0 投票
0 回答
35 浏览

c - 数据对齐编译器选项

我有下一个代码:

此代码在带有 x86 前处理器的系统上运行良好,但在 Blackfin 设备上失败。在 Blackfin 设备上发生错误。从错误消息的第一行是:

数据访问未对齐地址违规

我读到 Blackfin 处理器在没有与字长数据对齐的情况下无法工作。然后我尝试了下一个代码:

此代码适用于 x86 和 Blackfin 硬件。现在我有一个问题:是否存在不是从代码手动对齐数据的方法,而是通过例如编译器选项?

感谢您的关注!

0 投票
3 回答
542 浏览

gcc - 区分 gcc 诊断

我在解释 gcc (4.8.2) 警告和错误时遇到问题。更准确地说,很难分辨一个问题在哪里结束,另一个问题从哪里开始。我只能通过控制台访问构建机器,因此不能选择使用 IDE。

我真的需要能够快速区分个别问题。有没有办法让 GCC 在不同的诊断消息之间插入一些东西?

这是我得到的示例输出:

实际上,这还不算太糟糕,因为没有涉及宏扩展(我们也使用 Boost.Preprocessor)。尽管如此,很难一眼看出这个输出是关于两个问题的,第二个在最后 3 行,第一个占据了之前的整个文本墙。

有没有办法在它们之间插入一些分隔符?即使是空行也可以,您可以搜索或grep搜索。

我已经阅读了关于 Options to Control Diagnostic Messages Formatting 的 GCC 文档,但我找不到任何东西。[也不能用作搜索锚,因为并非所有消息都有一个(上面的第一个没有)。我没主意了。