gcc 和 g++/gcc-c++ 有啥区别?
Posted
技术标签:
【中文标题】gcc 和 g++/gcc-c++ 有啥区别?【英文标题】:What's the difference between gcc and g++/gcc-c++?gcc 和 g++/gcc-c++ 有什么区别? 【发布时间】:2011-05-02 05:16:50 【问题描述】:在我看来gcc可以同时处理c和c++项目,那么为什么需要g++/gcc-c++呢?
g++和gcc-c++有什么区别?
【问题讨论】:
gcc-c++ 似乎不是标准的编译器名称,至少现在是这样。谷歌搜索,我得到这个问题作为实际包含该字符串的顶部链接,唯一的另一个是 rpmfind.net 上列出的包。所以我不知道它是什么......可能只是一个符号链接。 What is the difference between g++ and gcc?的可能重复 【参考方案1】:gcc
会将 C 源文件编译为 C,如果文件具有适当的扩展名,则将 C++ 源文件编译为 C++;但是它不会自动链接到 C++ 库中。
g++
将自动包含 C++ 库;默认情况下,它还会编译带有扩展名的文件,这些扩展名表明它们是 C 源代码为 C++,而不是 C。
来自http://gcc.gnu.org/onlinedocs/gcc/Invoking-G_002b_002b.html#Invoking-G_002b_002b:
C++ 源文件通常使用以下后缀之一:
.C
、.cc
、.cpp
、.CPP
、.c++
、.cp
或.cxx
; C++头文件经常使用.hh
、.hpp
、.H
,或者(对于共享模板代码).tcc
;和预处理的 C++ 文件使用后缀.ii
。 GCC 识别具有这些名称的文件并将它们编译为 C++ 程序,即使您调用编译器的方式与编译 C 程序的方式相同(通常使用名称 gcc)。但是,使用 gcc 并没有添加 C++ 库。 g++ 是一个调用 GCC 并将
.c
、.h
和.i
文件视为 C++ 源文件而不是 C 源文件的程序,除非使用 -x,并自动指定与 C++ 库的链接。该程序在预编译带有.h
扩展名的 C 头文件以用于 C++ 编译时也很有用。
例如,要编译一个写入std::cout
流的简单 C++ 程序,我可以使用任一(Windows 上的 MinGW):
但如果我尝试:
gcc -o test.exe test.cpp我在链接时得到未定义的引用。
对于另一个区别,以下 C 程序:
#include <stdlib.h>
#include <stdio.h>
int main()
int* new;
int* p = malloc(sizeof(int));
*p = 42;
new = p;
printf("The answer: %d\n", *new);
return 0;
编译并运行良好:
gcc -o test.exe test.c但是使用编译时会出现几个错误:
g++ -o test.exe test.c错误:
test.c: In function 'int main()':
test.c:6:10: error: expected unqualified-id before 'new'
test.c:6:10: error: expected initializer before 'new'
test.c:7:32: error: invalid conversion from 'void*' to 'int*'
test.c:10:9: error: expected type-specifier before '=' token
test.c:10:11: error: lvalue required as left operand of assignment
test.c:12:36: error: expected type-specifier before ')' token
【讨论】:
因为它使用“new”作为变量名,嗬嗬。 什么样的程序员使用“new”作为变量名?我更想知道的是,您是如何使用 gcc 成功编译该可憎的... @JohnJohn 这只是一个有效的 C(但无效的 C++)代码示例,这就是 gcc 编译它的原因。【参考方案2】:据我所知,g++ 使用正确的 C++ 链接器选项,而 gcc 使用 C 链接器选项(因此您可能会得到未定义的引用等)。
【讨论】:
@gdb:有趣,我通常会遇到问题,不过我猜你可能通过手动传递正确的标志来修复它们。 可能。另外,g++和gcc-c++有什么区别? @gdb:我很困惑……这不是你最初的问题吗?以上是关于gcc 和 g++/gcc-c++ 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章