问题标签 [gcc6]

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 回答
431 浏览

c - GCC 的 -Wmaybe-uninitialized 是否会为基于枚举的 switch 语句生成带有 -O1 的虚假警告?

我有一段如下形式的代码:

我使用 GCC 6.3.0 编译并收到警告:

该代码对我来说似乎是安全的,并且确实有一些关于GCC 会产生误报的讨论。

这是一个虚假的警告吗?

更多相关信息:

  • 添加注释掉的default:块可以解决警告
  • 警告不会出现-O0
0 投票
1 回答
1518 浏览

gcc - 如何在 Cygwin 上安装 gcc 6.4.0

我已经安装了 cygwin 然后我运行setup-x86_64.exe -q -P wget -P gcc-g++并安装了 gcc 5.4.0

但是如何在 cygwin 上安装 gcc 6.4.0?

0 投票
2 回答
33852 浏览

c++ - 为什么 GCC 似乎没有文件系统标准库?

我遇到了文件系统库的问题,它应该包含在 c++17 编译器中,两天后我尝试在树莓派中安装 gcc-7.0.2 但它不起作用,它无法识别命令gcc-7 或 g++-7 甚至-std=c++17所以我不得不安装 g++-6 和 gcc-6apt-get install 无论如何,安装 6 版本后,编译器包括 c++17。我使用代码块作为 IDE,我必须添加一个新的编译器并添加选项 -std=c++17 来启用它,但是在主代码中,当我包含文件系统库时,它说没有这样的文件或目录。

我的问题是,如何正确添加 c++17 编译器及其库(如文件系统)?

0 投票
1 回答
1326 浏览

c - 无法在 Mac 上使用 gsl 进行编译

我正在尝试在我的 MacBook Pro(13 英寸,2012 年中)上的 Montecarlo 模拟上实现 gsl_rng.h。模拟全部用 C 语言编写。我的问题是 gcc-6 抱怨它找不到 gsl 库,尽管我认为编译标志很好。

declare.h 的顶部,它包含在我正在处理的所有 .c 文件中:

错误:

我的 makefile 中包含的编译标志:

我通过 Homebrew 安装了 gcc-6 和 gsl。

如何让 gcc-6 找到 gsl?我的标志错了吗?

生成文件:

的输出ls /usr/local/Cellar/gsl/2.4/include/gsl/是:

的输出ls /usr/local/Cellar/gsl/2.4/include/是:

的输出ls /usr/local/Cellar/gsl/2.4/include/gsl/太长而无法发布,但一切都在那里,因为它应该。

额外信息:我使用 g++-6 而不是 gcc-6,因为我最终要在其中执行模拟的集群要求代码符合 C++。

0 投票
1 回答
51 浏览

c - 我的 C 代码遇到 sigsegv 错误

我在本地机器上没有收到任何错误,但是 codechef 和 ideone 给出了运行时错误代码

0 投票
1 回答
602 浏览

c++ - 从 gcc 5.4 升级到 gcc 6.3 std::thread std:ref 问题

我最近从 gcc 5.4 升级到 gcc 6.3。用于编译和运行的 C++ 代码停止编译,我没有足够的经验来推断出了什么问题。

该代码位于我创建的一个对象中,用于使用 sfml 生成窗口。它实例化一个线程,该线程使用 sfml::Window 指针根据外部设置的指向视频帧的指针更新图像。

代码基本而简单,我在代码的其他地方生成线程(尽管不是对象的线程)。

以下是代码片段:

在上面显示的 renderThread = 行(第 174 行,错误输出中)上生成的错误又长又残酷,老实说,当我试图理解它们时,我感觉自己快要淹死了。从什么时候开始 c++ 有元组?哈哈。我在工作中学习python,终于知道了元组是什么,然后我发生了这种情况......

我刚刚检查过,它仍然可以使用 gcc 5.4 编译和运行。

这是错误,注意这只是最初的几个错误,我不想在论坛上发垃圾邮件。

更新:

0 投票
2 回答
498 浏览

c++ - 在 lambda 中使用静态方法时出错

我有一个static方法my_method_1()my_class我正在尝试在 lambda 中使用它:

gcc6 给我一个错误:

没有为此 lambda 函数捕获“this”

在 gcc4 中,它编译。

0 投票
2 回答
143 浏览

c++ - 带有 lambda 表达式的 Boost::Signals2 插槽在 arm32 上使用 gcc6 失败

我从一位同事那里收到了以下代码,使用 Boost::Signal2 和 lambda 表达式将代码分解到最低限度。它使用 g++ 6.x 和 g++ 5.4.1 编译(后者带有参数 -std=c++11)。

它应该打印i: 5 (应该是 5)

对 arm32 (arm-cortexa15-linux-gnueabihf-g++) 使用 gcc 6.4.1(或 6.1.1)交叉编译器并在这样的系统上运行,输出为i: 0(应为 5)

其他架构(x86_64)和编译器(gcc 5.4.1)按预期工作。

当我更改代码以使用信号而不是插槽时,一切正常。

我的问题是:

  1. 这段代码真的应该可靠地输出 i: 5 (应该是 5),还是这段代码有错误并且只是意外地工作?

  2. 或者 ARM32 gcc6 编译器中是否存在错误?(海合会 5 作品)

代码:

编译并运行提供以下输出:

0 投票
1 回答
44 浏览

c - 为什么结构内的函数可以使用 C 语言

如这个小脚本所示。

我在结构中添加了一个指向函数的指针,但我不知道为什么它会起作用,因为函数'addCount'没有接收任何参数,它实际上加起来了指定的次数。

我在 ideone.com、wandbox.org 和 WSL 中的编译器等不同环境中使用 GCC 6.3.0 编译此代码。

这是它与ideone一起工作的证据。 https://ideone.com/Cam4xY

0 投票
4 回答
100 浏览

c - 使用内置函数进行奇怪的 GCC6 优化

使用 GCC6 和下面的代码片段,这个测试

false,并且这个 printf 被执行

并产生这个非常奇怪的输出(GCC6):

我 > 31 || i < 0 是FALSE,其中i=32 /* GCC6 的奇怪结果!!!*/

而使用 GCC4 我得到:

我 > 31 || i < 0 为,其中i=32 /* GCC4 结果正常 */

看起来完全没问题。

怎么会这样??

代码片段(损坏的遗留代码!):

根据有关 GCC 内置函数的文档,必须避免调用 __builtin_ctz(0) :

内置函数:int __builtin_ctz (unsigned int x) 返回 x 中尾随 0 位的数量,从最低有效位位置开始。如果 x 为 0,则结​​果为 undefined

所以很明显,解决编码错误的方法是在调用 __builtin_ctz(value) 之前简单地检查值。这是清楚和理解的。

我可以停在那里并转移到其他主题......但是,我仍然不明白我怎么可能(使用损坏的代码)获得以下输出:

我 > 31 || i < 0 是FALSE,其中i=32 /* GCC6 的奇怪结果!!!*/

奇怪的 GCC6 优化还是什么?

以防万一它很重要:

任何的想法?