gcc和g++ 简介

gcc是一个c编译器, g++是c++编译器。我们根据代码的后缀名来判断用哪个编译器,若代码后缀名是*.c,就用gcc,若代码后缀名是*.cpp就用g++编译器。

g++既可以编译c又可以编译c++,是因为g++在内部做了处理,默认编译c++程序,但如果遇到c程序,它会直接调用gcc去编译。

但有些理解还是有误区的

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

1、后缀为.c的,gcc把它当作是c程序,而g++当作是c++程序,后缀为.cpp的,两者都会认为是c++程序,注意,虽然c++是c的超集,但是两者对语法的要求是有区别的,例如

#include

int main(int argc, char* argv[])

{
   if(argv == 0) return;

   printString(argv);

   return;
}
int printString(char* string)

{
  sprintf(string, "This is a test.\n");
}

如果按照C的语法规则,OK,没问题,但是,一旦把后缀改为cpp,立刻报三个错:

“printString未定义”;

“cannot convert `char**' to `char*”;

”return-statement with no value“;

    这3个错分别对应前面红色标注的部分。可见C++的语法规则更加严谨一些。

gcc 和g++的区别主要是在对cpp文件的编译和链接过程中,因为cpp和c文件中库文件的命名方式不同。

2、编译阶段,g++回调用gcc,对于c++代码,两者是等价的,但是因为gcc命令不能自动和c++程序使用的库联接,所以通常用c++完成链接,为了统一起见,干脆编译/链接统统用g++了,这就给人一种错觉,好像cpp程序只能用g++似的。

你可能感兴趣的:(gcc和g++ 简介)