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

c++ - 带有发布和调试版本的简单 makefile - 最佳实践

我是makefile的新手。我从“使用 GNU make 管理项目”一书中学习了 makefile 创建和其他相关概念。makefile 现在已经准备好了,我需要确保我创建的文件是好的。这是生成文件

问题

  1. 上面给出的 makefile 可以很好地与发布和调试版本一起使用。但它的格式是否正确?或者你看到其中有什么缺陷吗?
  2. 当使用make调用时,上面的 makefile 默认会调试构建。对于发布版本,make mode=release是必需的。这是正确的方法吗?
  3. 提供给 g++ 的调试和发布编译器标志是否正确?对于调试,我使用-g -Wall和发布,只是-Wall。这是正确的吗?

任何帮助都会很棒。

0 投票
9 回答
7624 浏览

c++ - 我应该如何更正导致“计算值未使用”警告的代码?

我有一个双精度数组,需要对该数组进行计算,然后找到该计算产生的最小值和最大值。这基本上是我所拥有的:

我收到一条警告说计算的值result从未使用过,并且由于我们将所有警告都视为错误,因此无法编译。如何修复此代码以避免警告?我正在为我的编译器使用 g++。

这是警告文本:

编辑:我不明白反对票,但我现在已经开始工作了。感谢大家花时间帮助我。

0 投票
5 回答
70472 浏览

c++ - 使用 g++ 制作静态库的优化和标志

我刚开始在 Linux 上使用 g++ 编译器,并在编译器标志上遇到了一些问题。这是他们

优化

我在 g++ 手册页中阅读了有关优化标志-O1的信息。我不明白何时使用这些标志。通常你使用什么优化级别?g++ 手册对.-O2-O3-O2

进一步优化。GCC 执行几乎所有支持的优化,不涉及空间速度折衷。当您指定 -O2 时,编译器不会执行循环展开或函数内联。与 -O 相比,此选项增加了编译时间和生成代码的性能。

如果它不进行内联和循环展开,如何实现上述性能,是否推荐使用此选项?

静态库

如何使用 g++ 创建静态库?在 Visual Studio 中,我可以选择一个类库项目,它将被编译成“lib”文件。g ++中的等价物是什么?

0 投票
5 回答
3701 浏览

c++ - g++ 拒绝了我的简单仿函数“期望一个类型,得到'xyz'”

我一直在玩 C++ 中的函子。特别是,我有一个对的向量,我想按对的第一个元素进行排序。我开始编写一个完全专业的仿函数(例如“bool MyLessThan(MyPair &lhs, MyPair &rhs)”)。然后,仅仅因为这类东西很有趣,我想尝试编写一个通用的“将 F 应用于这对的第一个元素”函子。我在下面写了,但 g++ 不喜欢它。我得到:

错误:“模板结构 Pair1stFunc2”的模板参数列表中参数 2 的类型/值不匹配错误:预期类型,得到“更少”

谁能阐明我在这里做错了什么?我知道这是一个稍微人为的例子,但我想知道发生了什么,如果只是为了改进我的 STL-fu。

0 投票
9 回答
127466 浏览

c++ - 在 OSX 上更新 GCC

所以我是一个新程序员,我刚刚在我的 Macbook 上安装了 XCode 来获取 GCC。我认为 Xcode 是在 OSX 上获取 GCC 的唯一方法。现在,当我在 C++ 中运行我的 Hello World 应用程序时,g++ 出现说它是 4.0.1 版,但是当我查找以 g 开头的命令时,我也看到了 g++-4.2。有没有办法让 4.2 默认而不是 4.0.1,还有没有办法将 gcc 更新到最新版本 4.4.0?

编辑:好的,所以我安装了 macports 并安装了 gcc4.4,它在终端上显示为 gcc-mp-4.4,我如何使用 gcc_select 使其默认,比如命令和东西是什么。谢谢。

0 投票
3 回答
706 浏览

g++ - 与 g++ 3.4.4 和 g++ 3.4.5 的链接错误

使用:windows xp、g++ 3.4.4 和 cygwin 和 g++ 3.4.5 和 mingw。

我正在用 cppunit 编译一个简单的单元测试类。

当我使用 g++ 3.4.5 链接时,会出现很多链接错误。当我与 g++ 3.4.4 链接时,我没有收到任何错误,并且 exe 链接正常并运行。

我似乎无法追查错误,所以有什么想法吗?

谢谢。

编辑:链接错误:未引用的函数错误。喜欢:

编辑: cmd 行:

更新:Visual Studio 中的相同代码:没有错误,单元测试按预期运行。

0 投票
4 回答
7696 浏览

c++ - 默认模板类参数混淆 g++?

昨天我遇到了一个 g++ (3.4.6) 编译器问题,我使用 Intel (9.0) 编译器编译的代码没有问题。这是一个显示发生了什么的代码片段:

g++ 编译器错误是:

显然,以这种方式编写时不接受默认参数,并且编译器假定指定了新的函数参数而不是第二个模板参数,然后它需要一个默认值,因为该stuff参数有一个。我可以通过创建 typedef 来帮助编译器,然后一切都编译得很好:

所以我可以解决我的问题,但我不明白发生了什么。我是否在这里错过了 C++(模板?)语言功能,我做错了什么,还是 g++ 编译器不接受第一段代码是错误的?

注意顺便说一句,这也编译...

0 投票
1 回答
484 浏览

g++ - 使用 mingw32 g++ 链接错误

为什么我会得到:

我正在使用 Mingw32 编译器套件。

0 投票
2 回答
43087 浏览

cygwin - Cygwin 中未安装 C++

我刚刚安装了 Cygwin,可以从 Windows、do lsemacsvi等启动 bash shell。但是,当我这样做时,g++它说找不到命令。

我以为g++是默认安装在 Cygwin 中的?如果不是这种情况,我可以将哪些类别g++作为包添加到我的 cygwin 中?

0 投票
1 回答
2039 浏览

gcc - GCC 没有将库链接到非默认路径

我已经在我的 Fedora10 机器上安装了 boost C++ 库,但我想使用一个更新的版本,我保存在我的主文件夹中的某个位置。我希望 g++ 使用我的主文件夹位置中的包含和库文件,而不是默认 ( /usr/include and /usr/lib64)。

就此而言,我还在我的文件中声明CPLUS\_INCLUDE\_PATH and LIBRARY\_PATH了环境变量,如此所述。~/.bashrc

现在当我跑步时,

预处理器使用我的主文件夹位置中的包含文件,覆盖默认位置(因为它应该,因为CPLUS\_INCLUDE\_PATH在搜索路径中具有更高的优先级)。但是链接器似乎没有遵循相同的优先规则。它总是从默认位置使用 libboost_python.so/usr/lib64而不是首先搜索LIBRARY\_PATH。只有当我使用switchlibboost\_python.so明确指定时,它才会链接到我的主文件夹中的库。-L这真的很不方便。