问题标签 [gcc4]

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

c - 为什么 gcc4 不展开这个循环?

gcc 4.4.6文档中指出:

我正在编译这段代码:

...一次有funroll-all-loops优化,一次没有:

然后我diff用来比较每个的汇编代码(使用生成-S -fverbose-asm)。

生成的代码是相同的。

尝试将循环更改为 a do while; 调整循环计数器(最多 100 个);更改循环体内的语句。

我会错过什么?为什么这个循环没有展开?

更新

Nikos C--param max-unroll-times=N建议使用其中 N 是上限来提高循环注册参数。虽然这是一个明智的建议,但它并没有改变行为。我还将循环迭代降低到只有 10 次。还更新了代码以实际“做”某事,没有任何变化。

0 投票
1 回答
88 浏览

c++ - 访问模板化基类的模板化方法

0 投票
1 回答
9159 浏览

cygwin - 如何使 OpenMP 在 Cygwin 下与 MinGW-64 一起工作?

情景

我正在使用 C99 ANSI C 开发一个使用OpenMPGMP的应用程序。它的自然栖息地将是具有大量内核的 linux 机器,所以那里基本上没有什么大问题,但由于我不想在这里讨论的原因,我必须在 64 位 Windows 机器上在 Cygwin 下开发。

当我使用 32 位版本的 gcc 时,某处出现了可怕的错误,并且应用程序比非常粗糙的单线程版本慢了大约 60 倍,而实际上它应该比 CPU 的数量更快. 它使工作变得不可能。我真的不知道是什么原因造成的;无论如何,我已经决定改用 64 位版本的 MinGW,x86_64-w64-mingw32-gcc-4.5.3确切地说是和他的朋友。

附注:我确信减速不是我的多线程中的缺陷,多线程应用程序在 linux 机器上工作正常且速度更快。

实际问题

设置 GMP 很容易,它可以从源代码编译而没有任何麻烦,然后就像一个魅力一样工作。编译下面的简单示例-fopenmp也很有魅力:

但是,执行它给了我

我知道这个问题,但我想在不下载任何二进制文件的情况下完成这项工作,而不是从官方 Cygwin 存储库下载任何二进制文件。由于我的示例是使用-fopenmpswitch 编译的,我相信这也应该是很有可能的。

有人可以帮我吗?提前感谢一堆。

0 投票
3 回答
607 浏览

c++ - typedef - 原始类型到原始类型

将原始类型的typedef转换为另一种原始类型是否有效?

在 VS 2012 上,发出警告但编译正常。

警告 C4091:“typedef”:当没有声明变量时,“long”左侧被忽略

但是在 gcc-4.3.4 上,它失败了。

错误:声明没有声明任何东西。

哪个编译器符合标准?

PS:我不会在生产代码中写这样的东西。只是想出了想法和检查。

0 投票
2 回答
577 浏览

c++ - G++ 4.5.0 中的 std::forward_as_tuple

我对该功能有迫切的需求std::forward_as_tuple,但仅限于使用 GCC 4.5.0(我知道这是一个糟糕的情况,但它会为我解决很多问题,所以请保持尖刻的言论最低限度)。标<tuple>头似乎不包含该功能(应该如此),所以我的问题是:

  1. 它是否隐藏在其他标题中?(这种情况以前发生过,但很难确定。)
  2. 是否可以推出自己的实现?那就是:它是否可以用在 GCC 4.5.0中实现的 c++11 的部分来实现?如果有人真的知道如何做到这一点,那么奖金。
0 投票
1 回答
996 浏览

linux - 对升级 gcc 或 binutils 的影响

我想用 Red Hat Enterprise Linux 5.8 编译,gcc 是 4.1.2。但是愚蠢需要 gcc >=4.6。所以我需要将 gcc 升级到 4.6,也许是 binutils 等。如果新的工具链生成诸如 *.a *.so 之类的二进制文件,在旧的 Red Hat Enterprise Linux 5.8 上运行它们会带来任何问题或不稳定吗?

0 投票
2 回答
4947 浏览

c++ - g++ 警告:永远不会被执行

继承了一个 C++ 项目。我正在通过 makefile 使用 gcc 4.1.2 在 RHEL 5.5 中构建。该项目很大(数百个文件),总的来说代码非常好。但是,在编译过程中,我经常收到一条 GCC 警告,上面写着:

它没有给我错误源自的源文件或行号。我要冒昧地说 GCC 的标头很好,所以这里发生了什么?我以前从未遇到过这个特别的警告。

0 投票
0 回答
164 浏览

c++ - BOOST_STATIC_ASSERT 不在 gcc 4.2 上编译,而在 3.4.6 上编译

我正在移植项目以使用 4.2 与 3.4.6 进行编译

在 gcc 4.2 中编译以下代码时出现错误,而它在 gcc3.4.6 中工作正常

我尝试使用 BOOST_MPL_ASSERT 但没有成功。

导致错误的代码行

0 投票
1 回答
291 浏览

c - 指向不透明结构数组的指针

我对 gcc 4.3 有一个奇怪的问题,我想知道这是编译器的特定问题还是一般的 C 问题。诚然,我使用了一个非常奇怪的结构,但我喜欢它,因为它允许我执行一些原本不可能的规则。该项目分为几个模块,每个模块都有一个不透明的结构。标头中有一个typedef struct <tag> <type>声明,在 1 c 文件中,有一个 astruct tag { ... };和所有函数通过 a 引用一个元素<type> *

每个模块都知道自己的结构,其他模块的结构是不可见的。在一个模块中,我不使用 1 个元素,而是使用固定的元素数组。这意味着该模块的某些函数使用指向数组的指针。我们称之为模块wdi。所以我有例如

并用于分配(我知道非常不寻常的语法)直接返回指向数组的右指针。

这在 GNU-C 3.4.6 (Solaris SPARC) 下运行良好,在 cc 下,它也编译了 sun 编译器 v12(但由于应用程序的另一部分中断,无法对其进行测试)。但是在 gcc 4.3.3(也在 4.4.6 x86-64 和 4.6.2 ARM 上测试过)上,它没有。我得到编译错误array type has incomplete element type。我不明白为什么编译器在那个阶段需要这些信息。它也不需要其他不透明结构的大小。

它是一个 gcc 错误吗?

标准是怎么说的?

我找不到关于它的东西。我应该向 GNU 提交错误报告吗?

0 投票
1 回答
1634 浏览

linux - 在 Linux 上构建 FBX SDK

试图获得在 Ubuntu 12.04 上编译的示例之一

我在用着 make -f Makefile-x64-static

但是,我得到了错误 make: gcc4: Command not found

我尝试在 makefile 中从 gcc4 切换到 gcc。

但是,我得到编译错误 note: #pragma message: IMPORTANT NOTE: The FBX SDK API changed substantially. Please define FBXSDK_NEW_API in your project and fix compilation errors as instructed in fbxsdk_compatibility.h.

和链接错误 /usr/bin/ld: cannot find -luuid

任何提示将不胜感激。