问题标签 [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.
c++ - 带有发布和调试版本的简单 makefile - 最佳实践
我是makefile的新手。我从“使用 GNU make 管理项目”一书中学习了 makefile 创建和其他相关概念。makefile 现在已经准备好了,我需要确保我创建的文件是好的。这是生成文件
问题
- 上面给出的 makefile 可以很好地与发布和调试版本一起使用。但它的格式是否正确?或者你看到其中有什么缺陷吗?
- 当使用make调用时,上面的 makefile 默认会调试构建。对于发布版本,make mode=release是必需的。这是正确的方法吗?
- 提供给 g++ 的调试和发布编译器标志是否正确?对于调试,我使用-g -Wall和发布,只是-Wall。这是正确的吗?
任何帮助都会很棒。
c++ - 我应该如何更正导致“计算值未使用”警告的代码?
我有一个双精度数组,需要对该数组进行计算,然后找到该计算产生的最小值和最大值。这基本上是我所拥有的:
我收到一条警告说计算的值result
从未使用过,并且由于我们将所有警告都视为错误,因此无法编译。如何修复此代码以避免警告?我正在为我的编译器使用 g++。
这是警告文本:
编辑:我不明白反对票,但我现在已经开始工作了。感谢大家花时间帮助我。
c++ - 使用 g++ 制作静态库的优化和标志
我刚开始在 Linux 上使用 g++ 编译器,并在编译器标志上遇到了一些问题。这是他们
优化
我在 g++ 手册页中阅读了有关优化标志-O1
的信息。我不明白何时使用这些标志。通常你使用什么优化级别?g++ 手册对.-O2
-O3
-O2
进一步优化。GCC 执行几乎所有支持的优化,不涉及空间速度折衷。当您指定 -O2 时,编译器不会执行循环展开或函数内联。与 -O 相比,此选项增加了编译时间和生成代码的性能。
如果它不进行内联和循环展开,如何实现上述性能,是否推荐使用此选项?
静态库
如何使用 g++ 创建静态库?在 Visual Studio 中,我可以选择一个类库项目,它将被编译成“lib”文件。g ++中的等价物是什么?
c++ - g++ 拒绝了我的简单仿函数“期望一个类型,得到'xyz'”
我一直在玩 C++ 中的函子。特别是,我有一个对的向量,我想按对的第一个元素进行排序。我开始编写一个完全专业的仿函数(例如“bool MyLessThan(MyPair &lhs, MyPair &rhs)”)。然后,仅仅因为这类东西很有趣,我想尝试编写一个通用的“将 F 应用于这对的第一个元素”函子。我在下面写了,但 g++ 不喜欢它。我得到:
错误:“模板结构 Pair1stFunc2”的模板参数列表中参数 2 的类型/值不匹配错误:预期类型,得到“更少”
谁能阐明我在这里做错了什么?我知道这是一个稍微人为的例子,但我想知道发生了什么,如果只是为了改进我的 STL-fu。
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 使其默认,比如命令和东西是什么。谢谢。
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 中的相同代码:没有错误,单元测试按预期运行。
c++ - 默认模板类参数混淆 g++?
昨天我遇到了一个 g++ (3.4.6) 编译器问题,我使用 Intel (9.0) 编译器编译的代码没有问题。这是一个显示发生了什么的代码片段:
g++ 编译器错误是:
显然,以这种方式编写时不接受默认参数,并且编译器假定指定了新的函数参数而不是第二个模板参数,然后它需要一个默认值,因为该stuff
参数有一个。我可以通过创建 typedef 来帮助编译器,然后一切都编译得很好:
所以我可以解决我的问题,但我不明白发生了什么。我是否在这里错过了 C++(模板?)语言功能,我做错了什么,还是 g++ 编译器不接受第一段代码是错误的?
注意顺便说一句,这也编译...
g++ - 使用 mingw32 g++ 链接错误
为什么我会得到:
我正在使用 Mingw32 编译器套件。
cygwin - Cygwin 中未安装 C++
我刚刚安装了 Cygwin,可以从 Windows、do ls
、emacs
、vi
等启动 bash shell。但是,当我这样做时,g++
它说找不到命令。
我以为g++
是默认安装在 Cygwin 中的?如果不是这种情况,我可以将哪些类别g++
作为包添加到我的 cygwin 中?
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
这真的很不方便。