问题标签 [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-6 中捕获像“-Wduplicated-cond”这样的重复项
就像标题说的那样,对于那些已经知道从你开始的人来说,可以使用这个标志GCC-6
在语句中捕获重复项,如下所示:if
-Wduplicated-cond
输出将是:
现在我知道以下内容:
else if( (a > 4) && (a < 6) )
不一样
else if( a == 5 )
但是碰巧我会检查相同的条件 if a == 5
。
我的问题是,是否有机会捕捉(避免)这种重复?
c++ - 存在使用命名空间时的全局范围解析
考虑以下代码:
此代码有效吗?还是::foo
模棱两可?或确实::foo
指的是class foo
,因此没有::foo::baz
。
当谈到编译器时,gcc 6.1.1
似乎认为后者:
另一方面gcc 5.3.1
,clang 3.8.0
和 intel 编译器 16.0.3 不会产生任何警告或错误。
我怀疑在 C++14 标准的 3.4.3.2.2 下,这应该是有效的并且没有歧义,但我不太确定。
编辑:此外,foo::baz mybaz
只有 clang 报告了一个模棱两可的错误。
gcc - 执行编译命令时出现gdb错误:libcc1.so:无法打开共享对象文件:没有这样的文件或目录
我从源代码编译了最新的 gdb 版本以尝试新compile
命令。但不幸的是,Could not load libcc1.so: libcc1.so: cannot open shared object file: No such file or directory
每当我尝试执行compile
命令时它都会出错。我检查了我是否libcc1.so
安装了库并且我已经安装了。实际上看这里安装的库,看起来gcc已经安装了libcc1.so。我的 gcc 版本是 6.1 顺便说一句。
linked-list - 带有互斥锁的线程安全代码
试图汤姆在 c11 (gcc6) 中实现我的链表,线程安全。唯一我没有得到多少互斥锁和解锁我应该去?
或者
或者
寻找一种不让其他线程等待太多的方法,因为我将有许多持续时间很短的任务从文件中读取最多 10 个字节,更改内存中的 10 个字节,写入 10 个字节的文件。
c++ - -fsanitize=bounds-strict 是否包含在 GCC 6 的 -fsanitize=undefined 中?
我正在为使用 GCC 6 编译的 C++ 库编写问题报告。我正在阅读GCC 6 Changes, New Features, and Fixes,其中一个注释是:
- UndefinedBehaviorSanitizer 获得了一个新的清理选项 -fsanitize=bounds-strict,它可以严格检查数组边界。特别是,它启用了 -fsanitize=bounds 以及灵活的类似数组成员的数组的检测。
是否包含严格的边界检查-fsanitize=undefined
?还是我们都需要-fsanitize=undefined
and -fsanitize=bounds-strict
?
c - c struct (gcc) 问题上的原子加载/保存
尝试我的运气来实现无锁单链表。
这是否也使 _Atomic 结构的所有成员都具有原子性?
atomic_load 和 atomic_store 的用法是否正确?
c++ - gcc 6.1.0 分段错误 - gcc 错误?
让我们考虑以下代码。事实上,这是我使用 gmock 和模拟 void(void) 方法发现的缩小问题。
构建它:
优化级别不同于 -O0 并且运行结果会导致分段错误。
是 gcc 错误还是带有 c++ 代码的东西(是的,是的,我知道它使用副作用,但它可以与其他编译器一起使用,并且也没有优化)
nvidia - gcc - openacc - 编译的程序无法正常运行
最近,GCC 社区已经做出了一些努力,在他们的编译器中支持 OpenACC。所以,我想尝试一下。
使用这个与 GCC 网站上的主要文档很接近的分步教程(教程),我能够编译和构建支持 OpenACC 的GCC 6.1 。
然后,我使用以下命令编译了我的程序:
gcc pi.c -fopenacc -foffload=nvptx-none -foffload="-O3" -O3
而且,一切都没有任何错误。
执行没有错误,但没有正确答案。
这是我的 C 代码和正在运行的程序的输出:
这是运行后的输出a.out
:
有任何想法吗?
c++ - 为什么 std::equal 比两个小的 std::array 的手动循环慢得多?
我正在分析一小段代码,它是更大模拟的一部分,令我惊讶的是,STL 函数 equal (std::equal) 比简单的 for 循环慢得多,逐个元素地比较两个数组。我写了一个小测试用例,我认为这是两者之间的公平比较,并且使用 Debian 档案中的 g++ 6.1.1 的差异并非微不足道。我正在比较两个有符号整数的四元素数组。我测试了 std::equal、operator== 和一个小的 for 循环。我没有使用 std::chrono 来确定确切的时间,但是可以通过 time ./a.out 明确地看到差异。
我的问题是,鉴于下面的示例代码,为什么 operator== 和重载函数 std::equal (我相信它调用 operator== )需要大约 40 秒才能完成,而手写循环只需要 8 秒?我正在使用最近的基于英特尔的笔记本电脑。for 循环在所有优化级别(-O1、-O2、-O3 和 -Ofast)上都更快。我编译了代码
g++ -std=c++14 -Ofast -march=native -mtune=native
循环运行了很多次,只是为了让肉眼清楚地看到差异。模运算符表示对数组元素之一的廉价操作,用于防止编译器在循环外进行优化。
c++ - GCC 错误 - 在 constexpr 中输入/递减数组访问
我在 constexpr 函数内的 GCC 6 和 7(不是 GCC 5)中发现了一个错误,如果函数在编译时(错误结果)或运行时(正确结果)得到评估,这会导致不同的结果。
问题是数组访问中的递增(也发生在递减)操作。
常量表达式的编译时结果为 0(错误),运行时结果为 1(正确)。
任何人都可以确认此错误并将其报告给:https ://gcc.gnu.org/bugzilla/
我无法在那里创建帐户User account creation has been restricted.
。我联系了管理员,但对我来说这个错误非常重要。所以它也想通知你。谢谢!