Questions tagged «gcc»

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

7
C ++警告:双零除数
情况1: #include <iostream> int main() { double d = 15.50; std::cout<<(d/0.0)<<std::endl; } 它在编译时没有任何警告和打印inf。好的,C ++可以处理零除(实时查看)。 但, 情况2: #include <iostream> int main() { double d = 15.50; std::cout<<(d/0)<<std::endl; } 编译器发出以下警告(实时查看): warning: division by zero [-Wdiv-by-zero] std::cout<<(d/0)<<std::endl; 为什么在第二种情况下编译器会发出警告? 是0 != 0.0吗 编辑: #include <iostream> int main() { if(0 == 0.0) std::cout<<"Same"<<std::endl; else std::cout<<"Not …

4
如何判断头文件的来源?
我如何知道g ++在哪里可以找到包含文件?基本上如果我 #include <foo.h> g ++将使用任何包含选项添加或更改路径来扫描搜索路径。但是,最终,有什么方法可以告诉我g ++选择编译的foo.h的绝对路径吗?如果无数的搜索路径中有多个foo.h,则尤其有用。 缺少实现该目标的方法...是否有办法让g ++告诉我,包括默认值和所有include选项后其最终搜索路径是什么?
97 c++  c  gcc  include  g++ 

2
-fpic和gf参数有什么区别?
我已经阅读了gcc手册页,但我还是不明白之间的差别-fpic和-fPIC。有人可以用非常简单明了的方式解释它吗? 相关问题: -fPIC在构建共享库时是什么意思? 如果在可执行文件中使用gcc -fPIC标志编译对象,将会产生什么影响?
96 gcc  fpic 

1
使用委托构造函数进行成员初始化
我已经开始尝试C ++ 11标准,我发现了这个问题,该问题描述了如何从同一类中的另一个ctor调用您的ctor,以避免使用init方法或类似方法。现在,我正在尝试使用类似如下的代码进行相同的操作: hpp: class Tokenizer { public: Tokenizer(); Tokenizer(std::stringstream *lines); virtual ~Tokenizer() {}; private: std::stringstream *lines; }; cpp: Tokenizer::Tokenizer() : expected('=') { } Tokenizer::Tokenizer(std::stringstream *lines) : Tokenizer(), lines(lines) { } 但这给了我错误: In constructor ‘config::Tokenizer::Tokenizer(std::stringstream*)’: /path/Tokenizer.cpp:14:20: error: mem-initializer for ‘config::Tokenizer::lines’ follows constructor delegation我尝试将Tokenizer()部分移到列表的第一和最后,但这无济于事。 这背后的原因是什么,我应该如何解决?我试着lines(lines)用this->lines = lines;代替将其移动到身体,并且效果很好。但是我真的很希望能够使用初始化列表。

13
如何在预处理器宏中使用“ sizeof”?
有什么方法可以sizeof在预处理器宏中使用吗? 例如,多年来,我想做很多事情,例如: #if sizeof(someThing) != PAGE_SIZE #error Data structure doesn't match page size #endif 我在这里检查的确切内容已完全组成-重点是,我经常喜欢放入这些类型的(大小或对齐)编译时检查,以防止有人修改数据结构而导致对齐或重新对齐的情况。大小会破坏它们的东西。 不用说-我似乎无法以sizeof上述方式使用。
95 c  gcc 


9
编译错误:“ g ++:尝试执行'cc1plus'错误:execvp:没有这样的文件或目录”
当我使用popenin 编译C / C ++程序时,php出现此错误: g++: error trying to exec 'cc1plus': execvp: No such file or directory 但是,如果我在外壳中运行php代码,则工作正常。 在Arch Linux中 PHP代码: <?php function rfile($fp) { $out=""; while (!feof($fp)) { $out.= fgets($fp, 1024000); } return $out; } $p = popen('g++ -Wall -g aplusb.cc -o aplusb 2>&1', 'r'); $result = rfile($p); pclose($p); …
95 php  c++  c  linux  gcc 

8
如何在Ubuntu中更改默认的GCC编译器?
我已经在已经具有gcc / g ++-4.4的ubuntu 11.04上安装了gcc-3.3 / g ++-3.3。所以在我的系统中gcc-3.3和4.4都可用。我可以根据需要调用两个编译器。如果我只是调用该命令,gcc则将调用gcc-4.4。要调用gcc-3.3,我必须使用命令gcc-3.3。 如何将默认编译器更改为gcc-3.3?当我执行命令时,gcc它应该调用gcc-3.3而不是gcc-4.4。 另外,如何将make文件中的变量CXX更改为gcc-3.3?我希望更改系统中的一个通用全局位置,而不是更改所有make文件。
95 linux  ubuntu  gcc 




7
带有GCC的C / C ++:将资源文件静态添加到可执行文件/库
有人知道如何使用GCC将任何资源文件静态地直接编译到可执行文件或共享库文件中吗? 例如,我想要添加永不更改的图像文件(如果更改,则无论如何我都必须替换该文件),并且不希望它们位于文件系统中。 如果这是可能的(我认为是因为Windows的Visual C ++也可以这样做),如何加载存储在自己的二进制文件中的文件?可执行文件会自行解析,查找文件并从中提取数据吗? 也许我还没有看到GCC的选择。使用搜索引擎并没有真正吐出正确的东西。 我需要此功能才能用于共享库和普通的ELF可执行文件。 任何帮助表示赞赏


4
实验性::文件系统链接器错误
我尝试在gcc 6.0的开发中实际使用新的c ++ 1z功能。 如果我尝试这个小例子: #include <iostream> #include <experimental/filesystem> namespace fs = std::experimental::filesystem; int main() { fs::path p1 = "/home/pete/checkit"; std::cout << "p1 = " << p1 << std::endl; } 我有: / opt / linux-gnu_6-20151011 / bin / g ++ --std = c ++ 1z main.cpp -O2 -g -o go …
94 c++  gcc  c++17 


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.