gcc和g++的区别

误区一:gcc只能编译C代码,g++只能编译c++代码

  • 俩个都可以
  • 后缀为.c的,gcc把它当作是C程序,而g++当作是C++程序;后缀为.cpp的,俩个都会认为是C++程序
  • 编译阶段 g++会调用gcc,对于c++代码,二者是等价的。但是因为gcc命令不能自动和C++程序使用的库链接,所以通常用g++完成链接。

误区二:gcc不会定义__cplusplus宏,而g++会

  • 实际上,这个宏只是标志着编译器将会把代码按C还是C++语法来解释,如上所诉,如果后缀为.c并且采用gcc编译器,则该宏就是未定义的。否则就是已定义的。

误区三:编译只能用gcc,链接只能用g++

  • 编译可以用gcc/g++,而链接可以用g++或者gcc -lstdc++.因为gcc命令不能自动和C++程序使用的库链接。g++会自动调用gcc二者等价。

误区四:extern "C" 与 gcc/g++有关系

  • 实际上并没有关系,无论是gcc还是g++,用extern  "C" 时,都是以C的命名方式来为symbol命名,否则都是c++方式命名。

 

实际上

g++ == gcc -xc++ -lstdc++ -shared-libgcc

你可能感兴趣的:(Linux)