问题标签 [gcc4.7]

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

c++ - 为什么使用 gcc 4.7 编译时出现此堆栈跟踪,但使用较旧的 pre 4.3 编译时却没有?

我有一个相当大的二进制文件,我已经在一个相当旧版本的 GCC (4.1.2) 上构建了一段时间。我最近用 4.7 构建了它,但是当我运行它时,它会因以下回溯而崩溃:

我不知道这是在抱怨什么以及为什么它只是 gcc 4.7 的事情。它可能是什么,我该如何调试?

0 投票
1 回答
1117 浏览

c++ - 当 operator< 在所有路径上递归时,Visual Studio 2008 运行时堆栈溢出警告

下面的 C++ 代码在 Visual Studio 2008 中生成以下警告:

1>c:...\sample.cpp(6) : 警告 C4717: 'operator<' : 在所有控制路径上递归,函数将 > 导致运行时堆栈溢出

如果我在需要 operator< 的任何情况下使用 Sample 类,它实际上会因堆栈溢出错误而崩溃(例如,在将第二个 Sample 对象插入到多重集中之后)。构造函数一直被调用,直到堆栈空间用完。

下面的代码是自行生成警告所需的全部内容(代码中没有任何引用 Sample 类的内容)。

在 Win7 上使用 VC++ 和 VS2008 (Win32, /W3) 显示警告。对于相同的平台和完全相同的代码,但在 Eclipse 上使用 MinGW GCC 4.7.3,我没有收到任何警告。

如果我添加 < string > 标题,则警告在 VS2008 中消失,并且 Sample 类的任何使用都可以正常工作。

此外,如果我显式声明 Sample 构造函数,VS2008 会引发以下编译错误:

1>.\Sample.cpp(5) : error C2678: binary '<' : no operator found which takes a left-hand operand of > type 'const std::string' (或没有可接受的转换) 1> c :...\Sample.hpp(13): 可能是 'bool operator <(const Sample &,const Sample &)' 1> 尝试匹配参数列表 '(const std::string, const std::string )'

但是,在 GCC 中显式设置构造函数仍然不会产生任何警告或错误(我将 Eclipse 中的警告设置为我能做到的最全面的级别)。

我想知道是否有人可以大致解释一下VS2008如何确定何时生成此堆栈溢出警告。在这种情况下,事实证明它是正确的,所以我很想知道它是如何完成的。另外,如果可能的话,为什么 GCC 在这里表现不同。希望这是有道理的。

0 投票
1 回答
268 浏览

c++ - 在 Debian 测试 x64 中无法编译 c++ 4.7.2

我正在尝试在 debian 测试 x64bits 中使用 g++ 进行手动编译,

我的文件 test.cpp 的内容是:

但是当我运行命令时,例如编译一个简单的 hello word

当我运行命令ls

g++ 什么也不产生。很少见。

基本上发生在我尝试用 c++ 编译的任何程序中。

关于我的 Debian 的数据:

核心: 3.9-1-amd64

关于 g++ 的数据(运行命令 g++ -v):

如何解决我的问题?

谢谢你。

0 投票
1 回答
1088 浏览

c - long long int 值打印不正确

当我使用 Armv7 内核交叉编译目标应用程序时,错误地打印了带有“long long int”的变量。

输出如下:

有人可以解释一下这里发生了什么吗?我应该怎么做才能使它正确?

经过更多分析,我刚刚观察到

高 32 位包含正确的值。我只是不明白为什么

  1. 结果是交换了上/下字。
  2. 就算换了字,为什么下面的字还有垃圾。

编译器信息:

0 投票
1 回答
2470 浏览

mingw - reimp.exe 与 TDM-GCC 一起工作

我使用 TDM 编译的 MinGW 版本,可以在这里找到 它很棒,但我需要 reimp.exe 将 MS lib 文件(主要是 MySQL C 客户端库)转换为 GCC .a 文件。任何人都有一个地方可以让我获得 reimp.exe 的工作版本?

0 投票
0 回答
69 浏览

c++11 - 类范围的“使用”别名作为返回类型发出编译器错误

为了保持一些代码的可读性并避免拼写错误,我public在头文件的类定义部分中使用了以下语句:

我在头文件中声明一个函数Assembly_Tuple作为返回类型:

我在源文件中定义函数:

但是当我尝试编译时,出现以下错误:

但是,在定义内部,没有任何问题。

如果我将该行更改为令人震惊的:

没关系。显然,问题在于使用范围之外的别名,即使它是公共的并且我明确地调用了类命名空间。

我查看了 Bjarne 的书,但他没有在任何地方提到这是否合法。

这是使用 gcc 4.7。

大多数情况下,我只想知道为什么这是无效的。

0 投票
2 回答
2721 浏览

c++ - boost::uuids::random_generator 线程安全吗?

考虑使用g++ -std=c++11(GCC 4.7.2) 编译此函数:

getID从多个线程调用是否安全?

正如这里提到的,根据 C++11 标准,第一行的本地静态对象定义是线程安全的。问题是第二行boost::uuids::random_generator::operator()对同一对象的调用generator是否也是线程安全的。返回的 UUID 在它们在单个线程中的意义上是否是唯一的?

0 投票
1 回答
1143 浏览

ubuntu - 配置错误:C 编译器无法创建可执行文件

我试图安装 rvm ( \curl -L https://get.rvm.io | bash -s stable --ruby --autolibs=enable --auto-dotfiles)。在 ZI 出现配置错误之前,它运行良好:

以下是上述日志文件的内容:

然后我尝试了一个“hello world”C程序,编译时出现以下错误:

我不确定为什么会引发此错误。我在论坛上找不到满意的答案。有人可以帮忙吗。谢谢

0 投票
1 回答
330 浏览

gcc - 我在 Ubuntu 12.04(LTS) 中将 gcc 4.6 更新到 4.7 或更高版本是否重要

我发现越来越多的开源库会使用 C++11 的特性,而我的 Ubuntu Desktop 12.04 只有 gcc 4.6,我想使用 update-alternatives 将默认的 gcc 版本更改为 4.7 或 4.8。我想知道,如果由 gcc 4.6 编译的 /usr/local/lib 中的库需要由新的 gcc 4.7/4.8 重新编译。在我看来,如果依赖库还在系统中,则无需重新编译。但是,如果新的gcc 4.7编译了一个依赖库,那么库之间的依赖关系还对吗?对不起我的英语不好。谢谢。

0 投票
1 回答
558 浏览

c++ - 指向类型名成员的指针

考虑一下:

为什么第二个失败,在一个 typedef 语句中获得所需 typedef 的正确方法是什么?

我的编译器是 GCC-4.7.2。