gcc和g++只是一个调用器,根据各自的规则确定是调用对应的编译器(GUN C Compiler or GUN C++ Compiler)。区别如下:
gcc g++
编译阶段 对于c文件,按照c的编译规则;
对于cpp文件,按照c++的编译规则;
c文件和cpp文件一律按照c++的编译规则链接阶段对于cpp文件编译的.o文件需要显示指定链接到c++标准库,如-lstdc++g++自动链接到C++标准库
PS:
1、在编译阶段调用GUN C++ Compiler编译器时,会加入一些额外的宏定义,如:
#define __GXX_WEAK__ 1
#define __cplusplus 1
#define __DEPRECATED 1
#define __GNUG__ 4
#define __EXCEPTIONS 1
#define __private_extern__ extern
所以,无论是c文件还是cpp文件,只要调用的是C++编译器,1)都定义了__cplusplus宏的;2)只有在c文件和cpp文件采用不同的编译器时,__cplusplus才有意义;3)都会按照c++强语法生成目标文件。
2、参考链接:https://www.cnblogs.com/oxspirt/p/6847438.html