g++和gcc的区别是什么?它们中的哪一个应该用于一般的c++开发?


当前回答

“GCC”是GNU编译器集合的常用缩写。这既是编译器最通用的名称,也是在强调编译C程序时使用的名称(作为以前代表“GNU C compiler”的缩写)。

当提到c++编译时,通常称编译器为“g++”。由于只有一个编译器,所以无论在什么语言环境中,都可以准确地称其为“GCC”;然而,当重点是编译c++程序时,术语“g++”更有用。

你可以在这里阅读更多。

其他回答

gcc和g++都是GNU编译器。它们都编译c和c++。区别在于对于*.c文件,gcc将其视为c程序,而g++将其视为c++程序。*.cpp文件被认为是c++程序。c++是C的超集,语法更严格,所以要注意后缀。

“GCC”是GNU编译器集合的常用缩写。这既是编译器最通用的名称,也是在强调编译C程序时使用的名称(作为以前代表“GNU C compiler”的缩写)。

当提到c++编译时,通常称编译器为“g++”。由于只有一个编译器,所以无论在什么语言环境中,都可以准确地称其为“GCC”;然而,当重点是编译c++程序时,术语“g++”更有用。

你可以在这里阅读更多。

gcc和g++是GNU编译器集合(曾经只是GNU C编译器)的编译器驱动程序。

尽管它们根据文件类型自动决定调用哪个后端(cc1 cc1plus…),但它们还是有一些不同之处,除非使用-x语言重写。

它们默认值中最重要的区别可能是它们自动链接到哪些库。

根据GCC的在线文档链接选项和g++的调用方式,g++等价于GCC -xc++ -lstdc++ -shared-libgcc(第一个是编译器选项,第二个是链接器选项)。这可以通过运行-v选项来检查(它会显示正在运行的后端工具链命令)。

虽然gcc和g++命令做的事情非常相似,但g++被设计为编译c++程序时调用的命令;它的目的是自动做正确的事情。

在幕后,它们实际上是同一个程序。据我所知,两者都根据文件扩展名来决定是将程序编译为C还是c++。两者都能够链接到c++标准库,但默认情况下只有g++这样做。因此,如果你有一个用c++编写的程序,碰巧不需要链接到标准库,gcc将碰巧做正确的事情;但是,g++也一样。因此,没有理由不使用g++进行一般的c++开发。

GNU编译器集合

指向GNU编译器支持的所有不同语言的引用。

gcc: GNU C编译器 g++: GNU c++编译器

主要区别:

gcc会将:*. C \*.cpp文件分别编译为C和c++。 g++将编译:*. C \*.cpp文件,但它们都将被视为c++文件。 另外,如果你使用g++来链接目标文件,它会自动链接到std c++库中(gcc不这样做)。 gcc编译C文件的预定义宏更少。 GCC编译*.cpp和g++编译*.c\*.cpp文件有一些额外的宏。

编译*.cpp文件时的额外宏:

#define __GXX_WEAK__ 1
#define __cplusplus 1
#define __DEPRECATED 1
#define __GNUG__ 4
#define __EXCEPTIONS 1
#define __private_extern__ extern