g++和gcc的区别是什么?它们中的哪一个应该用于一般的c++开发?
当前回答
gcc和g++都是GNU编译器。它们都编译c和c++。区别在于对于*.c文件,gcc将其视为c程序,而g++将其视为c++程序。*.cpp文件被认为是c++程序。c++是C的超集,语法更严格,所以要注意后缀。
其他回答
一个显著的区别是,如果你传递一个。C文件给gcc,它将被编译为C。
g++的默认行为是将. C文件视为c++(除非指定了-x C)。
“GCC”是GNU编译器集合的常用缩写。这既是编译器最通用的名称,也是在强调编译C程序时使用的名称(作为以前代表“GNU C compiler”的缩写)。
当提到c++编译时,通常称编译器为“g++”。由于只有一个编译器,所以无论在什么语言环境中,都可以准确地称其为“GCC”;然而,当重点是编译c++程序时,术语“g++”更有用。
你可以在这里阅读更多。
对于c++,你应该使用g++。
它是相同的编译器(例如GNU编译器集合)。GCC或g++只是使用不同的默认选项选择不同的前端。
简而言之:如果你使用g++,前端会告诉链接器你可能想要链接到c++标准库。gcc前端不会这样做(如果您传递正确的命令行选项,它也可以与它们链接)。
gcc和g++是GNU编译器集合(曾经只是GNU C编译器)的编译器驱动程序。
尽管它们根据文件类型自动决定调用哪个后端(cc1 cc1plus…),但它们还是有一些不同之处,除非使用-x语言重写。
它们默认值中最重要的区别可能是它们自动链接到哪些库。
根据GCC的在线文档链接选项和g++的调用方式,g++等价于GCC -xc++ -lstdc++ -shared-libgcc(第一个是编译器选项,第二个是链接器选项)。这可以通过运行-v选项来检查(它会显示正在运行的后端工具链命令)。
我在linux系统中测试gcc和g++。通过使用MAKEFILE,我可以定义“GNU make”使用的编译器。我用“C plus plus”的所谓“动态内存”定位功能进行了测试:
int main(){
int * myptr = new int;
* myptr = 1;
printf("myptr[0] is %i\n",*myptr);
return 0;
}
只有g++可以在我的电脑上成功编译,而gcc会报错
undefined reference to `operator new(unsigned long)'
所以我自己的结论是gcc不完全支持“C + +”。对于c++源文件,选择g++似乎是一个更好的选择。