1
-1
http://gcc.gnu.org/onlinedocs/gcc-3.3.6/gcc/G_002b_002b-and-GCC.html
gcc是一个编译器集合。它主要用于编译C、C++、艾达、JAVA和更多的编程语言。
G++是GNU编译器集合(GCC)的一部分。
编辑: 好的,澄清一下,因为我们在这里命名有点混乱。gcc是GNU编译器集合。它可以编译艾达、C++、C和其他十亿零一种语言。它是各种语言“前端”编译器(如gnat)的“后端”。去读我在gcc.gnu.org页面顶部创建的链接。 gcc也可以引用gnu c编译器。如果使用-LSTDC++命令,这将编译C++代码,但通常会阻塞和死亡,因为它没有拉入C++库。 G++,GNU C++编译器,类似于GNU C编译器,是GNU编译器集合的前端。C编译器的不同之处在于,它自动地包含这些库并进行一些其他的小调整,因为它假设它将被编译为C++代码来编译。 这就是困惑的根源。这能澄清一点吗? |
2
26
首先,问题(和其他一些答案)似乎是基于错误的前提,C是C++的严格子集,事实上并不是这样。C编译为C++ 不 就像编译C一样:它可以改变程序的含义! C将主要编译为C++,并且大部分会给出相同的结果,但也有一些事情是 明确定义 给予不同的行为。
下面是一个简单的例子-如果这是你的
然后编译为C将得到一个结果:
编译为C++会给出不同的结果(除非你使用一个不寻常的平台)
因为C规范将字符文本定义为具有类型
其次:
即使你坚持的语言的部分被定义为做同样的事情,也不能保证C++前端将以与C前端完全相同的方式解析代码(即给后端完全相同的输入),因此不能保证生成的代码将是相同的。当然是这样 可能的 在某些情况下,一个可能会比另一个生成更快的代码——尽管我可以想象,您需要复杂的代码才能找到差异,因为大多数优化和代码生成的魔力都发生在编译器的公共后端;两者之间的差异可能是相反的。 |
3
2
我认为它们都会产生相同的机器代码,因此在你的电脑上也会有相同的速度。 如果你想知道,你可以为两者编译程序集并比较两者,但是我敢打赌它们创建了相同的程序集,因此也创建了相同的机器代码。 |
4
2
分析一下,试试看。我敢肯定,它将取决于实际的代码,即使它可能需要一个非常奇怪的情况来获得任何不同的字节码。但是如果你没有
|
5
2
生成的机器代码应相同。A.out的G++版本可能会链接到几个额外的支持库中。这将使A.out的启动时间因几个系统调用而变慢。 但实际上并没有什么实际的区别。在达到20-40个链接库和数千个要解析的符号之前,Linux链接器不会明显变慢。 |
6
2
gcc和g++可执行文件只是前端,它们不是实际的编译器。基于文件扩展名,它们都运行实际的C或C++编译器(以及LD、AR、任何需要产生的输出)。所以你会得到完全相同的结果。G++通常用于C++,因为它与标准C++库(IoSokes等)链接。 如果你想把C代码编译成C++,要么改变文件扩展名,要么像这样做: gcc test.c -otest -x c++ |
Community wiki · C中有哪些耗时的操作? 1 年前 |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |