问题标签 [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 投票
2 回答
1106 浏览

c++ - gcc 4.7 和递归 constexpr 函数

我正在玩一点constexpr递归并尝试查看它是如何编译的,但我不明白在哪种情况下gcc选择在编译时或运行时计算递归。

我正在使用以下阶乘计算代码:

我改变x了阶乘中的值。

  • 在没有优化的情况下编译时,表达式不会在编译时计算。
  • 使用-O1标志编译时,在编译时仍不计算表达式。
  • 使用-O2,表达式在编译时计算 if x < 9。在此值之后,阶乘以循环的形式内联实现。更改-fconstexpr-depth标志的值不会改变任何事情。
  • 使用-O3,表达式是在编译时计算的if x < 7。在这个值之后,阶乘通过 x86 xmm 扩展实现内联。
  • 如果我将乘积更改为阶乘函数中的总和,我将获得最多10000或更多的编译时间计算,并且减少或增加 的值-fconstexpr-depth不会改变任何内容。

有谁知道 gcc 4.7 将递归函数实现为编译时或运行时的规则是什么?

0 投票
0 回答
930 浏览

c++ - 使用 OpenSUSE 12.2 的 OpenMP 编译错误

使用http://openmp.org/wp/openmp-compilers/上的示例代码,我尝试在我的 Linux 机器(运行 OpenSUSE 12.2)上运行这个简单的程序,但未能让它编译。

这是示例代码。

来自终端的片段。

G++/GCC 对我有用。如何让 OpenMP 为我工作?

有没有一种方法可以在不升级 GCC/g++ 的情况下更新 OpenMP?

0 投票
1 回答
3914 浏览

linker-errors - 链接错误:未定义对 icu_50::UnicodeString::UnicodeString() 的引用

我正在尝试编译我已声明为类成员的项目:

包含后(是的,找到了)

在我的 CMakeLists.txt 中,它搜索、查找和链接: icuuc icudata (libicuuc, libicudata) 如输出所示,在抛出错误之前:

-o icarus -rdynamic -lPocoNet -lPocoUtil -lPocoXML -licuuc -licudata

我已经从源 icu4c 50.1.2 构建和安装,并将其安装在 /usr/local/* cmake 正确找到库,因为我的错误来自链接阶段:

icu_50::UnicodeString::UnicodeString()' undefined reference to对icu_50::UnicodeString::~UnicodeString()' 的未定义引用

我在 Debian Wheezy 上使用启用了 -std=c++0x 的 gcc-4.7.2。昨晚在 Debian Squeeze 上使用相同标志的 gcc-4.3.2 编译了完全相同的代码!

我不能为我的生活,弄清楚我做错了什么!请帮忙!

0 投票
1 回答
1981 浏览

matlab - 64 位 Ubuntu 上 32 位 matlab 中的 mex 文件

我正在尝试从http://people.cs.uchicago.edu/~rbg/latent/编译对象检测程序,但是没有任何运气。

我安装了 64 位 Ubuntu 12.10、32 位 MATLAB 2012a。我也有 gcc 编译器

这是我得到的错误

我怀疑这与缺少 32 位库有关。我是 unix 系统的新手,所以我可能没有包含您需要知道的所有信息。

更新:

新错误看起来像

我试图创建一个符号链接

然而并没有解决问题

0 投票
0 回答
149 浏览

c++ - gcc 4.7.2 的实现有什么不同吗?

知道为什么这个 std::thread 相关代码在 LiveWorkSpace.org 上使用 gcc 4.7.2 编译Ideone.com和我的 Ubuntu 12.04 机器上运行失败

代码测试(所有情况下都是 gcc 4.7.2) -

0 投票
3 回答
5514 浏览

c++ - C++11 时钟:g++ stable_clock::is_steady == false?

所以准确的时序对我来说很重要,我正在研究 C++ 11 中指定的 3 种时钟类型,即system_clocksteady_clockhigh_resolution_clock. 我最初关心的是测试不同类型时钟的调用开销是否有任何差异,并检查每种类型时钟的分辨率。这是我的示例程序:

我用它编译

我用 G++ 4.7.2 编译,然后运行

  • SUSE Linux,内核 v3.1.10,CPU i7
  • Angstrom Linux 嵌入式系统,内核 v3.1.10,MCU Tegra 2 (ARM Cortex A9)。

第一个令人惊讶的是,这 3 种时钟显然是同义词。它们都具有相同的周期(1 微秒),并且时间/呼叫实际上是相同的。如果它们都相同,那么指定 3 种类型的时钟有什么意义?这仅仅是因为G++的实现chrono还不成熟吗?或者 3.1.10 内核可能只有一个用户可访问的时钟?

第二个惊喜,这是巨大的,是stable_clock::is_steady == false。我相当肯定,根据定义,该属性应该是正确的。是什么赋予了??我该如何解决它(即,实现稳定的时钟)?

如果你可以在其他平台/编译器上运行这个简单的程序,我很想知道结果。如果有人想知道,我的 Core i7 上大约是 25 ns/迭代,而 Tegra 2 上大约是 1000 ns/迭代。

0 投票
3 回答
806 浏览

c++ - Does std::vector satisfy the container requirements for Boost.Interprocess allocators?

In boost::interprocess documentation it is said as requirement for containers to be stored in shared memory:

  1. STL containers may not assume that memory allocated with an allocator can be deallocated with other allocators of the same type. All allocators objects must compare equal only if memory allocated with one object can be deallocated with the other one, and this can only tested with operator==() at run-time.
  2. Containers' internal pointers should be of the type allocator::pointer and containers may not assume allocator::pointer is a raw pointer.
  3. All objects must be constructed-destroyed via allocator::construct and allocator::destroy functions.

I am using gcc 4.7.1 with -std=c++11 (and boost 1.53). Is it safe to use the below defined ShmVector type?

I tried a dummy process which uses this type, and it looks it is working, but I am still not sure that the vector in gcc4.7.1 does satisfy all the requirements. I am especially not sure about the first requirement.

0 投票
1 回答
2045 浏览

c++ - G++ -M32 -M64 在 Windows 上切换

如何为支持 32 和 64 编译的代码块安装 gcc 4.7.2?

如果我安装 x32 位编译器:x32-4.7.2-release-win32-sjlj-rev10 它将使用 -m32 进行编译,但会为 -m64 提供一堆链接器错误

如果我安装 x64 位编译器:x64-4.7.2-release-win32-sjlj-rev10 它将使用 -m64 进行编译,但会为 -m32 提供一堆链接器错误

均来自:http: //sourceforge.net/projects/mingwbuilds/

再说一遍,我怎样才能让我的 Mingw 或 Gcc 能够使用 -m 开关为两者进行编译?

我正在使用 Windows 8 Pro x64。

0 投票
0 回答
338 浏览

c++ - c++11:通过别名模板对枚举类类型导数进行类型转换

考虑以下代码,它在 clang 中编译得很好,但在 gcc (4.7.2) 中编译得不好:

代码在 clang 中编译得很好,但在 gcc (4.7.2) 中,最终语句导致:

有问题的陈述与前3个陈述之间的区别是:

  1. 它涉及枚举类类型,而不是非枚举类类型。
  2. 它使用一个别名模板,它声明typename::type为方便起见

我的问题:以这种方式使用typename(在“别名模板”中)是否符合 C++11 标准,即使typename在不需要说明符的上下文中使用?或者这是 gcc 中的“语言不合规错误”?

0 投票
9 回答
8043 浏览

c++ - 使用 unique_ptr 控制文件描述符

理论上,我应该能够使用自定义指针类型和删除器来unique_ptr管理不是指针的对象。我尝试了以下代码:

这不起作用(带有-std=c++11参数的 gcc 4.7)。它响应以下错误:

通过深入研究 的定义unique_ptr,我可以看到阻止它工作的两个问题。第一个似乎明显违反标准,析构函数unique_ptr将“指针”(根据我的定义,即一个 int)与它进行比较nullptr,以查看它是否已初始化。这与它通过布尔转换报告它的方式形成对比,布尔转换是将它与"pointer()"(未初始化的“指针”)进行比较。这是我看到的错误的原因 - 整数与nullptr.

第二个问题是我需要一些方法来判断unique_ptr未初始化的值是什么。我希望以下代码段起作用:

为此,unique_ptr需要知道“未初始化的值”是-1,因为零是有效的文件描述符。

这是一个错误gcc,还是我想在这里做一些根本无法完成的事情?