Questions tagged «g++»

g ++是GNU编译器集合(GCC)的C ++前端。GCC是GNU编译器集合。它是Linux上针对C,C ++,Go,Fortran和Ada的事实上的标准编译器,并且还支持许多其他语言和平台。除编译器外,GCC还具有一个工具链(libc,libstdc ++,objdump,nm等),该工具链已在多个平台和系统上广泛使用。



3
LD_LIBRARY_PATH和LIBRARY_PATH
我正在构建一个简单的C ++程序,我想用它的最新版本临时替换系统提供的共享库,以进行开发和测试。 我尝试设置LD_LIBRARY_PATH变量,但链接器(ld)失败,并显示以下信息: / usr / bin / ld:找不到-lyaml-cpp 我期望它能工作,因为根据ld手册页: 链接器使用以下搜索路径来查找所需的共享库:...对于本机链接器,环境变量“ LD_LIBRARY_PATH”的内容... 然后,我尝试设置LIBRARY_PATH,并且有效。 根据GCC手册: LIBRARY_PATH的值是用冒号分隔的目录列表,非常类似于PATH。当配置为本地编译器时,如果无法使用GCC_EXEC_PREFIX找到特殊的链接器文件,则GCC会尝试搜索指定的目录。当在普通库中搜索-l选项时,使用GCC链接也会使用这些目录(但使用-L指定的目录排在最前面)。 正如(GCC)手册所建议的,LIBRARY_PATH可以工作,因为我与GCC链接。 但.. 由于我与gcc链接,为什么错误消息提示为什么调用ld? 具有两个目的相同的变量有什么意义?还有其他区别吗?
159 gcc  g++  ld 

9
为什么从非空函数的末尾流出而不返回值不会产生编译器错误?
自从我多年前意识到,默认情况下不会产生错误(至少在GCC中),我一直想知道为什么? 我知道您可以发出编译器标志来产生警告,但是它不总是错误吗?对于非void函数不返回有效值,为什么有意义? 评论中要求的示例: #include <stdio.h> int stringSize() { } int main() { char cstring[5]; printf( "the last char is: %c\n", cstring[stringSize()-1] ); return 0; } ...编译。
158 c++  c  gcc  g++ 

7
std :: enable_if有条件地编译成员函数
我试图通过一个简单的示例来了解如何使用std::enable_if。在阅读完此答案后,我想出一个简单的例子应该不难。我想使用std::enable_if两个成员函数之间进行选择,并只允许使用其中之一。 不幸的是,以下代码无法在gcc 4.7中进行编译,经过数小时的尝试,我一直在问你们我的错误是什么。 #include <utility> #include <iostream> template< class T > class Y { public: template < typename = typename std::enable_if< true >::type > T foo() { return 10; } template < typename = typename std::enable_if< false >::type > T foo() { return 10; } }; int main() { Y< …
156 c++  templates  g++  c++11 

5
g ++ -Wreorder有什么意义?
g ++ -Wall选项包括-Wreorder。下面介绍此选项的作用。对我来说,为什么有人会关心(尤其是默认在-Wall中将其打开)并不明显。 -Wreorder(仅C ++) 当代码中给定的成员初始化程序的顺序不正确时发出警告 匹配必须执行的顺序。例如: 结构A { 我 int j; A():j(0),i(1){} }; 编译器将重新排列i和j的成员初始化器。 匹配成员的声明顺序,对此发出警告 影响。该警告由-Wall启用。

8
在GCC / G ++编译器中使用-pedantic的目的是什么?
此说明说: -ansi:告诉编译器实现ANSI语言选项。这将关闭GCC的某些“功能”,这些功能与ANSI标准不兼容。 -pedantic:与结合使用-ansi,可以告诉编译器严格遵守ANSI标准,拒绝任何不符合要求的代码。 首先要注意的是: GCC / G ++编译器的-pedantic和-ansi选项的目的是什么(我听不懂上面的描述)? 谁能告诉我使用这两个选项的正确情况? 我什么时候应该使用它们? 他们重要吗?
136 c++  c  gcc  g++ 

4
如何在命名空间std中转发声明模板类?
#ifndef __TEST__ #define __TEST__ namespace std { template<typename T> class list; } template<typename T> void Pop(std::list<T> * l) { while(!l->empty()) l->pop(); } #endif 并在我的主体中使用了该功能。我得到错误。当然,我知道还有更多的模板参数std::list(我认为分配器)。但是,这是没有意义的。我是否必须知道模板类的完整模板声明才能进行声明? 编辑:我以前没有使用过指针-这是一个参考。我将使用指针进行尝试。
131 c++  templates  g++ 

5
启用彻底和详细的g ++警告的标志
通常在C下gcc,我将从以下警告标志集开始(从多个来源痛苦地组合起来): -Wall -Wextra -Wformat-nonliteral -Wcast-align -Wpointer-arith -Wbad-function-cast \ -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Winline -Wundef \ -Wnested-externs -Wcast-qual -Wshadow -Wwrite-strings -Wno-unused-parameter \ -Wfloat-equal -pedantic -ansi 我将使用这组警告构建(至少是我的调试版本),并修复所有可能的内容(通常是所有内容),然后仅在不相关或不可修复的标记时才将其删除(几乎永远不会这样)。有时,-Werror如果在编译时必须离开,我也会添加。 我只是在学习C ++(是的,我落后时代15年),我想从右脚开始。 我的问题是:是否有人在下面为C ++预编译了一组类似的完整警告标志g++?(我知道其中许多都一样。)
122 c++  g++  warnings 

6
错误:使用已删除的功能
我一直在研究一个朋友写的一些C ++代码,遇到以下错误,使用gcc4.6编译时从未见过: error: use of deleted function ‘GameFSM_<std::array<C, 2ul> >::hdealt::hdealt()’ is implicitly deleted because the default definition would be ill-formed: uninitialized non-static const member ‘const h_t FlopPokerGameFSM_<std::array<C, 2ul> >::hdealt::h’ 编辑:这来自使用Boost MSM的部分代码:Boost Webpage Edit2:= delete()源代码中的任何地方都没有使用过。 一般来说,此错误是什么意思?发生此类错误时我应该寻找什么?

4
C ++中的额外资格错误
我有一个成员函数,定义如下: Value JSONDeserializer::ParseValue(TDR type, const json_string& valueString); 当我编译源代码时,我得到: 错误:成员'ParseValue'上的额外限定'JSONDeserializer :::' 这是什么?如何清除此错误?
120 c++  g++  compiler-errors 

4
如何在gcc中启用C ++ 11?
我在Mac OSX Mountain Lion上从http://hpc.sourceforge.net使用gcc 4.8.1 。我正在尝试编译使用中的to_string功能的C ++程序<string>。我需要-std=c++11每次使用该标志: g++ -std=c++11 -o testcode1 code1.cpp 有没有一种方法可以默认包含此标志?
117 c++11  g++ 

5
什么是.h.gch文件?
我最近有一个课堂项目,必须用G ++编写程序。 我使用了一个makefile,由于某种原因,它偶尔会留下一个.h.gch文件。 有时,这不会影响编译,但是每隔一段时间,它将导致编译器针对已解决或没有意义的问题发出错误。 我有两个问题: 1)什么是.h.gch文件,其用途是什么?和 2)为什么不清理会引起此类问题?
116 c++  g++ 

7
启用优化的不同浮点结果-编译器错误?
以下代码在经过优化和未经优化的情况下均适用于Visual Studio 2008。但是,它仅适用于未经优化(O0)的g ++。 #include <cstdlib> #include <iostream> #include <cmath> double round(double v, double digit) { double pow = std::pow(10.0, digit); double t = v * pow; //std::cout << "t:" << t << std::endl; double r = std::floor(t + 0.5); //std::cout << "r:" << r << std::endl; return r / …
109 c++  optimization  g++  c++-faq 

3
如何使用g ++创建静态库?
有人可以告诉我如何从.cpp和.hpp文件创建静态库吗?我需要创建.o和.a吗?我也想知道如何在其中编译静态库并在其他.cpp代码中使用它。我有header.cpp,header.hpp .我想创造header.a。在中测试header.a test.cpp。我正在使用g ++进行编译。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.