gcc和g++都是GUN的一个编译器。
通常对gcc和g++的误区:
误区一:gcc只能编译c代码,g++只能编译c++代码。
实际是两者都可以。
后缀为.c的gcc认为是c程序,g++认为是x++程序;
后缀为.cpp的,gcc和g++都认为是c++程序;
编译阶段,g++会调用gcc,对于c++代码,二者是等价的;但因为gcc不能自动和c++程序使用的库链接,所以通常用g++完成对c++代码的链接,为了方便,就编译/链接统一使用g++了。
误区二:gcc不会定义__cplusplus宏,而g++会
实际上,__cplusplus宏只是标志编译器会把代码按照c还是c++语法来解释;
如果后缀是.c并且使用gcc编译,那么该宏就是未定义的,否则,该宏就是已定义的。
误区三:编译只能用gcc,链接只能用g++
这句话混淆了概念,应该说:编译可以用gcc/g++,链接可以用g++或gcc -lstdc++;
gcc不能自动和c++程序使用的库链接,所以通常使用g++完成链接。但在编译阶段,g++会自动调用gcc,二者等价。
参考:课程列表_牛客网 (nowcoder.com)https://www.nowcoder.com/study/live/504/1/3