Questions tagged «g++»

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


13
usr / bin / ld:找不到-l <nameOfTheLibrary>
我正在尝试编译我的程序,它返回此错误: usr/bin/ld: cannot find -l&lt;nameOfTheLibrary&gt; 在我的makefile文件中,我使用命令g++并链接到我的库,这是到我的库的另一个目录的符号链接。 是否可以添加选项以使其正常工作?
443 c++  linux  g++ 

5
用g ++编译C ++ 11
我正在尝试将我的C ++编译器更新为C ++ 11。经过一些搜索,得出的结论是我必须使用标志-std=c++0x或-std=gnu++0x,但是我对标志的了解不多。谁能帮我?(我正在使用Ubuntu 12.04。) 这是当我尝试使用C ++ 11中包含的库(即数组)时从编译器收到的错误: #include &lt;array&gt; #include &lt;iostream&gt; int main() { std::array&lt;int, 3&gt; arr = {2, 3, 5}; ... } 该文件需要编译器和库支持即将推出的ISO C ++标准C ++ 0x。该支持目前处于试验阶段,必须使用-std = c ++ 0x或-std = gnu ++ 0x编译器选项启用。
367 c++  c++11  g++  flags 

30
未定义对vtable的引用
在构建C ++程序时,出现错误消息 未定义引用'vtable ... 这个问题是什么原因造成的?我如何解决它? 碰巧我收到以下代码的错误(所涉及的类是CGameModule。)而我一生都无法理解问题所在。起初,我认为这与忘记赋予虚拟功能一个实体有关,但是据我了解,一切都在这里。继承链有点长,但是这里是相关的源代码。我不确定应该提供什么其他信息。 注意:似乎是构造函数发生此错误的地方。 我的代码: class CGameModule : public CDasherModule { public: CGameModule(Dasher::CEventHandler *pEventHandler, CSettingsStore *pSettingsStore, CDasherInterfaceBase *pInterface, ModuleID_t iID, const char *szName) : CDasherModule(pEventHandler, pSettingsStore, iID, 0, szName) { g_pLogger-&gt;Log("Inside game module constructor"); m_pInterface = pInterface; } virtual ~CGameModule() {}; std::string GetTypedTarget(); std::string GetUntypedTarget(); bool DecorateView(CDasherView …
357 c++  gcc  g++ 

2
使用自定义类类型作为键的C ++ unordered_map
我正在尝试使用自定义类作为的键unordered_map,如下所示: #include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;unordered_map&gt; using namespace std; class node; class Solution; class Node { public: int a; int b; int c; Node(){} Node(vector&lt;int&gt; v) { sort(v.begin(), v.end()); a = v[0]; b = v[1]; c = v[2]; } bool operator==(Node i) { if ( i.a==this-&gt;a &amp;&amp; i.b==this-&gt;b &amp;&amp;i.c==this-&gt;c …

6
GCC转储预处理器定义
Наэтотвопросестьответына 堆栈溢出нарусском:Какузнатьсписоквсехопределённыхмакросов? gcc / g ++是否可以从命令行转储其预处理程序定义?我的意思是__GNUC__,__STDC__等等。
248 gcc  g++  c-preprocessor 

12
g ++(mingw)表示to_string不是std的成员
我正在制作一个小的词汇记忆程序,其中的单词会随机向我闪烁以获取含义。我想使用Bjarne Stroustroup告诉我们的标准C ++库,但是我遇到了一个看似陌生的问题。 我想将一个long整数更改为std::string以便能够将其存储在文件中。我已经雇用to_string()了相同的。问题是,当我用g ++(版本4.7.0,如其--‍version标志中所述)对其进行编译时,它说: PS C:\Users\Anurag\SkyDrive\College\Programs&gt; g++ -std=c++0x ttd.cpp ttd.cpp: In function 'int main()': ttd.cpp:11:2: error: 'to_string' is not a member of 'std' 我的程序出现此错误是: #include &lt;string&gt; int main() { std::to_string(0); return 0; } 但是,我知道这不可能,因为msdn库清楚地表明了它的存在,并且关于Stack Overflow(对于g ++版本4.5)的一个较早的问题说,可以使用该-std=c++0x标志将其打开。我究竟做错了什么?
245 c++  c++11  g++  mingw  tostring 

5
在G ++中,优化级别-O3危险吗?
我从各种来源(尽管大部分是我的同事发来的)都听说过,-O3用g ++ 的优化级别进行编译在某种程度上是“危险的”,除非被证明是必要的,否则通常应该避免编译。 这是真的吗?如果是这样,为什么?我应该坚持-O2吗?

7
gcc警告”“将在之后初始化”
我从无法修改的第三方代码中收到许多此类警告。有没有办法禁用此警告或至少在某些区域禁用此警告(例如VC ++中的#pragma push / pop)? 例: list.h:1122: warning: `list&lt;LogOutput*, allocator&lt;LogOutput*&gt; &gt;::node_alloc_' will be initialized after list.h:1117: warning: `allocator&lt;LogOutput*&gt; list&lt;LogOutput*, allocator&lt;LogOutput*&gt; &gt;::alloc_'

17
g ++对typeinfo的未定义引用
我只是遇到以下错误(并在线找到了解决方案,但是它在Stack Overflow中不存在): (.gnu.linkonce。[stuff]):对[方法] [目标文件]的未定义引用:( .. gnu.linkonce。[stuff]):对'[classname]的typeinfo的未定义引用 为什么可能会收到这些“对typeinfo的未定义引用”链接器错误之一? (如果您可以解释幕后发生的事情,则可以加分。)
208 c++  linker  g++ 

7
未定义对静态类成员的引用
谁能解释为什么以下代码无法编译?至少在g ++ 4.2.4上。 更有趣的是,当我将MEMBER转换为int时为什么会编译? #include &lt;vector&gt; class Foo { public: static const int MEMBER = 1; }; int main(){ vector&lt;int&gt; v; v.push_back( Foo::MEMBER ); // undefined reference to `Foo::MEMBER' v.push_back( (int) Foo::MEMBER ); // OK return 0; }
201 c++  g++ 

5
如何制作可变参数宏(可变数量的参数)
我想用C编写一个宏,它接受任意数量的参数,而不是特定数量的参数 例: #define macro( X ) something_complicated( whatever( X ) ) X参数的数目在哪里 我需要这个,因为它whatever已重载,可以使用2或4个参数调用。 我尝试两次定义宏,但是第二个定义覆盖了第一个! 我正在使用的编译器是g ++(更具体地说,是mingw)


1
禁用所有gcc警告
我正在开发一个项目,该项目将读取特定种类的编译器错误消息并对其进行有用的处理。我正在(随机的开源应用程序)上对其进行测试的示例代码库(因此经常进行重建)包含一些生成警告的位,这对我来说并不重要。 如何禁用来自GCC的所有警告,因此如果有错误消息,我只能看到错误消息?
184 gcc  g++  warnings 

8
在Ubuntu中的32位上交叉编译64位程序时缺少“ bits / c ++ config.h”
我正在运行32位版本的Ubuntu 10.10,并尝试交叉编译为64位目标。根据我的研究,我已经安装了g ++-multilib软件包。 该程序是一个非常简单的问候世界: #include &lt;iostream&gt; int main( int argc, char** argv ) { std::cout &lt;&lt; "hello world" &lt;&lt; std::endl; return 0; } 编译: g++ -m64 main.cpp 错误: In file included from main.cpp:1: /usr/include/c++/4.4/iostream:39: fatal error: bits/c++config.h: No such file or directory compilation terminated. 我找到了一个c++config.h文件,但它们位于中的“没有” 中的i486-linux-gnu和i686-linux-gnu目录下。/usr/include/c++/4.4/c++config.h/usr/include/c++/bits 关于我所缺少的任何想法?不带-m64标志的编译工作正常(a.out已创建并正确运行)。 编辑由于@nightcracker的提示,我对32位和64位系统的include结构进行了更多研究。我在下面添加了一个可以暂时“解决”问题的答案,但是我认为它将在下次更新时中断。基本上,我缺少一个名为的目录/usr/include/c++/4.4/i686-linux-gnu/64,该目录应包含一个名为的子目录bits,该子目录具有丢失的包含文件。知道应该由哪个软件包来处理吗?

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.