问题标签 [g++-4.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 投票
0 回答
204 浏览

c++ - 使用 Matrix Template Library 2 和 g++ 4.7 构建错误

几年前,我不得不MTL 2在我职业生涯的最后一个项目中使用该库(这是一项强制性要求)。我必须处理现有的(而且相当旧的)代码,而我使用的编译器是g++ 4.4.

现在,我想继续致力于该项目以尝试改进它。我想用一些C++11功能,既然Debian Wheezy自带了g++ 4.7,我想我会用的。

因此,我安装MTL 2并尝试编译该项目。但是我收到了一个关于未知的错误ptrdiff_t

谷歌了一下,我发现由于g++ 4.6标准标题中的某些内容发生了变化,并且我需要包含cstddef标题才能ptrdiff_t知道(a)

所以我将该头MTL 2文件包含在使用ptrdiff_t和重新编译项目的文件中。但是,出现了一个新错误:

我的问题是,是否有一种方法可以MTL 2g++ 4.7编译器一起使用,或者使用更新的版本并调整代码是否更好?(或使用与以前相同的编译器,g++ 4.4

(a)我将cstddef标题直接包含在MTL文件中。我应该在项目文件中完成它吗?

0 投票
2 回答
1765 浏览

c++ - c ++输入直到通过键盘发出信号的输入结束

我想编写一个 C++(C,如果它为我的问题提供简单的解决方案)程序,可以在其中输入,直到他选择通过按 Ctrl+D 等按钮组合来表示输入结束。我对此有两个问题。

  1. 哪些组合键用于表示Xterm中的输入结束?(Ctrl+C 或 Z 不起作用)
  2. while()当一个人按下1中回答的组合键时,我的循环中的逻辑代码应该是什么?

    }

程序在从终端接收到输入信号结束时继续。

我用gcc/g++ (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3.

0 投票
1 回答
4494 浏览

cuda - 带有 g++ 4.7 和 4.8 的 CUDA 5.5 RC:__int128 构建错误

我正在尝试在 MacOS X 10.8 上使用 CUDA SDK 5.5 RC 和 g++ 4.7 编译一些代码。如果我理解正确,CUDA 5.5 应该适用于 g++ 4.7。查看 /usr/local/cuda/include/host_config.h 它甚至应该适用于 g++ 4.8。

关于 g++ 4.8:我尝试编译以下程序:

但它失败了:

相同的程序使用 g++ 4.7 编译和运行:

但如果我包含 <limits>...

...即使 g++ 4.7 也失败了。构建日志位于此处:https
: //gist.github.com/lysannschlegel/6121347 您还可以找到一些其他错误,我不完全确定它们是否都与 __int128 缺失有关。
很可能其他标准库也包括破坏 g++ 4.7 的构建,限制是我绊倒的那个。

我还尝试了 g++ 4.5,因为我的机器上也有它(你永远不会有太多的编译器版本,对吗?),它可以工作。

我可以期望这将在 CUDA 5.5 版本中得到解决吗?(我希望 NVIDIA 不只是回到支持 gcc 直到 4.6 版。)
在此期间有没有办法解决这个问题?

更新:

正如@talonmies 在下面指出的那样,这严格来说不是 MacOS 上的 CUDA 5.5 中的错误,因为 MacOS 上不正式支持 gcc。由于许多第三方库不能正确处理支持的工具链、clang 或 llvm-gcc(llvm-gcc 来自 2007 年......),因此仍然需要让 gcc 工作。高达 4.6 的 gcc 应该可以正常工作(我只测试了 4.5)。
您可以使用@BenC 在评论中指出的技巧使 gcc 4.7 工作:

带有 gcc 4.8 的 nvcc 仍然在 cstdlib 中的 __int128 上阻塞。我猜 cstdlib 是在包含 --pre-include 文件之前包含的。

0 投票
0 回答
811 浏览

c++11 - 在 g++ 4.7.2 上使用 -std=c++11 的 CppUTest 错误

我一直在使用带有 g++ 4.7.2 的 CppUTest 一段时间,没有出现任何问题。但是,我刚刚打开了该-std=c++11选项,因此我可以开始使用std::unique_ptr它并立即失败。

即使只是编译主模块:

因以下变化而失败:

删除该-std=c++11选项会使一切再次正常工作。

CppUTest 文档对与重载的新运算符冲突的宏进行了一些评论,并建议首先#include 标准头文件,但我在根本不包含任何头文件的情况下遇到了这个问题,尽管它看起来像是CppUTest/CommandLineTestRunner.h包含了<string>它自己。

有人遇到过这个问题或知道问题是什么吗?

0 投票
1 回答
5075 浏览

c++ - 重载 'Point_(cv::Point2f&)' 的调用不明确

我正在为 OpenCV2 和 C++ 编写一些示例代码,但我被卡住了。编译器(Win7 上的 MinGW,g++ 4.7.2)说重载 'Point_(cv::Point2f&)' 的调用是模棱两可的,但我找不到确切的问题所在。这是错误:

这是代码:

我做错了什么?

编辑:我希望一些投反对票的人尝试解决这个问题。这不是这种类型的唯一问题,但我的已经被否决了 3 次?

此外,这是来自加拿大教授( http://www.laganiere.name/opencvCookbook/ )的书中的示例,他同时教授 OpenCV,我应该比他更好吗?我应该为我问这个感到羞耻吗?我是 C++ 和 OpenCV 的新手?我是否应该在其他十个论坛上提问,然后只有在 Stackoverflow 上找不到答案时才提问?

此外,我并不懒惰,我通过重写他的代码来帮助这个人(OpenCV:在一个窗口中录制镜头并在第二个窗口中显示相同的视频,但仅包含轮廓)。我帮助了一个比我了解少的人。但是,在这种情况下,我只是不知道如何在这段代码中解决这个问题,但在 30 分钟内我得到了三个反对票?

更新:正如 OpenCV 社区向我指出的那样,实际上应该允许将 Point 转换为 Point2f,反之亦然,但是版本 2.4.3 中的错误(http://code.opencv.org/issues/2616#note-1)阻止它这样做。这就解释了为什么几年前这段代码是为原作者编译的,而不是为我编译的。无论如何,用户@alrikai 为此提供了正确的答案和解决方法。

错误更正为:cv::circle(result, cv::Point2f(center), static_cast(radius), cv::Scalar(0), 2); 所以 cv::Point(center) 变成了这个 cv::Point2f(center)

0 投票
1 回答
254 浏览

c++ - g++ 4.7.2 对使用类型别名的处理似乎被破坏了

在以下代码中,g++ 4.7.2 似乎被using基于类型别名的混淆。

编码:

编译代码:

意外的编译时错误:

有问题的行有什么问题?代码是否违反了 C++11 标准或者这是一个 g++ 4.7.2 错误?g++-4.7 中的实时代码

0 投票
1 回答
180 浏览

c++ - 将文本、csv、excel 文件放入模式中

我是真正编程的初学者并且有 ff 问题我想读取存储在文件/csv/txt/excel 中的许多实例,如下所示

然后当我阅读这个文件时,它会遍历每个字符并从六个位置开始,一直持续到第 11 个位置——单行的最大大小为 12

这是我在 python 中尝试过的代码。但可以在 c++、java、dotNet 中使用。

我的问题是如何比较每个字符串并在最右边分配一个字符(位置 12,如 G、P、S 上方)

对齐第一行后如何向后退一步?

我怎样才能固定长度

请任何人查看片段并调整以解决上述情况

0 投票
1 回答
983 浏览

c++ - ==24303== 未初始化的值是由堆分配创建的

Valgrind 抱怨 new (第一个)的行:

我想解释一下,该字段lg_maxi_buf是 Audio_decoder 类的一部分,它的声明如下:

在类Audio_decoder的构造函数中lg_maxi_buf是这样初始化的:

感谢您的回答。我想我将不得不使用智能指针,但我对它们的了解很差。

0 投票
2 回答
125 浏览

c++ - C++ 中的向量在 Windows 和 Ubuntu 中的行为不同

我必须比较存储在向量中的两个字符串。比较在使用 mingw-g++ 编译器(版本 4.4.1)的 Windows 中运行良好。

但是当我尝试在运行 g++ 4.7.2 版的 Ubuntu 中做同样的事情时,我遇到了奇怪的问题。我在下面列出了它们:

  1. 当我尝试单独打印元素时,它们给出了正确的输出并且两个字符串都是相同的。

  2. 但是当我尝试使用 == 运算符或 strcmp() 比较它们时,即使它们相同,它们也不相等。

  3. 当我尝试打印上面比较的元素时,某个字符串正在替换第一个字符串的值。代码如下。理想情况下,不应该执行 if 循环,但它仍在执行并打印一些垃圾值而不是 v1[i]。

我不知道如何搜索这些错误。我从同一个文件中获取字符串并存储在 Windows 和 Ubuntu 中的向量中。

编辑:我在这里附上部分代码。右侧的函数返回字符串向量。我不能粘贴上面类的代码,因为它是非常大的代码。

0 投票
2 回答
3461 浏览

c++ - Scons 选择哪个版本的 g++ 无法识别的命令行选项“-std=c++11”

在 OpenSUSE 中使用 Scons 2.3.0 时遇到问题:

当我添加“-std=c++11”选项时,我看到了错误

我意识到这是因为我的 g++ 版本太旧(4.1)。所以我把它升级到4.7.1。下面的事情也完成了

  1. 我将 g++4.7.1 的路径移到 $PATH 中的第一位(在 /usr/bin 之前)
  2. 当我尝试

    我看到它显示了我的新 g++4.7.1 的路径

  3. 当我尝试时,g++ -v我还看到了 4.7.1 版本

  4. 在不使用 scons 的情况下,如果我尝试使用 构建一个简单的 helloWorld g++ -std=c++11 helloWorld.cpp,一切正常。

  5. 现在通过使用 scons,我看到了cc1plus: error: unrecognized command line option "-std=c++11"

  6. 我什s.system("g++ -v")至在我的 SConstruct 文件中添加,它仍然打印正确的版本(4.7.1)

所以我不确定我做错了哪一部分。

请给我一些建议

在此先感谢您的帮助!