问题标签 [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.
c - GCC 的 -Wmaybe-uninitialized 是否会为基于枚举的 switch 语句生成带有 -O1 的虚假警告?
我有一段如下形式的代码:
我使用 GCC 6.3.0 编译并收到警告:
该代码对我来说似乎是安全的,并且确实有一些关于GCC 会产生误报的讨论。
这是一个虚假的警告吗?
更多相关信息:
- 添加注释掉的
default:
块可以解决警告 - 警告不会出现
-O0
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?
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 编译器及其库(如文件系统)?
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++。
c - 我的 C 代码遇到 sigsegv 错误
我在本地机器上没有收到任何错误,但是 codechef 和 ideone 给出了运行时错误代码
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 编译和运行。
这是错误,注意这只是最初的几个错误,我不想在论坛上发垃圾邮件。
更新:
c++ - 在 lambda 中使用静态方法时出错
我有一个static
方法my_method_1()
,my_class
我正在尝试在 lambda 中使用它:
gcc6 给我一个错误:
没有为此 lambda 函数捕获“this”
在 gcc4 中,它编译。
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)按预期工作。
当我更改代码以使用信号而不是插槽时,一切正常。
我的问题是:
这段代码真的应该可靠地输出 i: 5 (应该是 5),还是这段代码有错误并且只是意外地工作?
或者 ARM32 gcc6 编译器中是否存在错误?(海合会 5 作品)
代码:
编译并运行提供以下输出:
c - 为什么结构内的函数可以使用 C 语言
如这个小脚本所示。
我在结构中添加了一个指向函数的指针,但我不知道为什么它会起作用,因为函数'addCount'没有接收任何参数,它实际上加起来了指定的次数。
我在 ideone.com、wandbox.org 和 WSL 中的编译器等不同环境中使用 GCC 6.3.0 编译此代码。
这是它与ideone一起工作的证据。 https://ideone.com/Cam4xY
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 优化还是什么?
以防万一它很重要:
任何的想法?