问题标签 [g++]

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 投票
5 回答
28555 浏览

c++ - 为什么我需要在 g++ 中使用 typedef typename 而不是 VS?

自从 GCC 发现我已经有一段时间了,但它就发生在今天。但我从来不明白为什么 GCC 需要在模板中使用 typedef typename,而 VS 和我猜想 ICC 不需要。typedef typename 是“错误”还是过于严格的标准,还是留给编译器编写者的东西?

对于那些不知道我的意思的人,这里有一个示例:

上面的代码在 VS 中编译(可能在 ICC 中),但在 GCC 中失败,因为它想要这样:

注意:这不是我正在使用的实际功能,而只是演示问题的一些愚蠢的东西。

0 投票
4 回答
31334 浏览

c++ - C++ 模板,未定义的引用

我有一个这样声明的函数:

并定义如下:

但是,当我尝试在 main() 函数中使用它时:

我从 g++ 收到以下错误:

谁能指出我正确的方向?

0 投票
18 回答
45290 浏览

c++ - 常用 C++ 优化技术列表

我可以列出一份常见的 C++ 优化实践吗?

我所说的优化是指您必须修改源代码才能更快地运行程序,而不是更改编译器设置。

0 投票
5 回答
2815 浏览

c++ - 将 GNU C++ 程序移植到 Visual C++

您如何将带有由 Linux 中的 GNU C++ 制作的 makefile 的 C++ 程序移植到 Visual C++?

0 投票
2 回答
12149 浏览

c++ - 为什么在 Eclipse 中出现“无法识别的仿真模式:32”错误?

使用 -m32 参数编译时为什么会出现此错误?

无法识别的仿真模式:32

我在 x86_64 机器上使用 g++ 进行编译。它发生在一个项目中,但不会发生在另一个项目中……有什么提示吗?

注意:我使用的是 Eclipse CDT,所以也许这是一个特定于 IDE 的 gocha?

改写的问题

或许更好的问题是:在 x86_64 机器上运行时,在 Eclipse 中构建 x86 二进制文件的最佳方法是什么?

0 投票
2 回答
982 浏览

objective-c - Linux 上的 Objective-C 是否被垃圾收集?

Objective-C v2.0(这是 mac 使用的)有一个新功能,垃圾收集。我是 Linux PC 上的孩子(如果你想知道的话,我是 Ubuntu)。所以我的问题是,使用 gcc/g++ 编译器是 Objective-C Garbage Collected 吗?

0 投票
4 回答
4969 浏览

c++ - 包括g ++标头:仍然找不到定义

晚上好 :)

我在玩 g++ 和 makefile。我已经到了这一点:

富.h:

Foo.h 最终包含在我的主 cpp 文件中,因此我可以通过调用 start/stop 来启动。

然后是bar.h:


但是 g++ 似乎不喜欢它:

我正在使用makefile,并尝试了以下组合:

尽管我认为我不应该在这里添加 bar.h,但不应该将它包含在 foo.h 中就足够了吗?

为了澄清,这大致是它现在的设置方式(是的,我知道这可以以更有效的方式完成):

这是怎么回事?我认为这是我对 g++ 及其处理标头的方式所缺少的东西,请指出正确的方向!

编辑 - 找到解决方案:

嗬!我现在觉得很傻。正在搞乱 boost::asio 并且有点忘了我仍然把它留在我的标题顶部的某个地方:使用 boost::asio::ip::tcp;

假设有一个 boost::asio::ip::tcp::bar 函数:D

哦,好吧,还是谢谢!

0 投票
1 回答
7813 浏览

c++ - boost::asio::ip::tcp::resolver::resolve() 永远阻塞

我正在尝试创建与boost.asio 示例中的此代码类似的内容。

套接字.h:

套接字.cpp:

g++ 构建它没有任何错误,但代码永远不会超过 resolver.resolve() 调用。
我已经为主机尝试了“127.0.0.1”和“localhost”,为端口尝试了“80”。(不认为这应该重要,但 apache2 已启动并正在运行)

当我 ctrl+c 退出我的应用程序时,它显然会终止,但它会在它之前输出“连接到字符串”。

我计划自己构建示例并查看是否出现相同的问题,并且肯定会在此处发布结果。有没有人遇到过这个问题或知道什么可能导致这种行为?

编辑:
这个例子运行得很好......我想我有一些调试要做。

第二次编辑:
我不明白,唯一可能不同的是主机/端口。
示例使用 char* argv[] 我正在使用:

第三次编辑:
它确实似乎在连接时阻塞,忘记了 fflush(stdout)。那么肯定是socket有问题了。要做更多的测试。

第四次编辑:
愚蠢的我,它根本没有阻塞!我只是过于依赖控制台输出..

0 投票
1 回答
220 浏览

g++ - 有人可以解释 g++ 3.4.2 和 g++ 4.1.2 之间的链接器区别吗?

我只是将一些代码从一个平台移动到另一个需要更改编译器版本的代码。其中两个实用程序源导致了与未定义符号的链接问题,在本示例中将它们称为 Foo.c 和 Foo.h。

一切都在用 g++ 3.4.2 编译和链接,我认为切换到 g++ 4.1.2 将是不费吹灰之力。使用 4.1.2 时编译正常,但由于未定义的符号链接失败。在其他源文件中使用的 Foo 中每个函数的符号,即。即使 Foo.h 包含在 Bar.c 中,Bar.c 也未定义。

问题是 Foo.c 文件不包含 Foo.h。那么问题来了,g++ 3.4.2 是如何在 4.1.2 不能链接的时候链接这段代码的呢?我认为 3.4.2 期待一个 .h 文件,然后“神奇地”包含它以避免这个问题。但是有人有更好的解释吗?

0 投票
6 回答
213810 浏览

c - 如何制作可变参数宏(可变数量的参数)

我想用 C 编写一个宏,它接受任意数量的参数,而不是特定的数字

例子:

其中X是任意数量的参数

我需要这个,因为whatever它重载并且可以用 2 或 4 个参数调用。

我尝试定义宏两次,但第二个定义覆盖了第一个!

我正在使用的编译器是 g++(更具体地说,mingw)