GCC G++ C C++的区别(转载)

gcc 是c的编译器,g++是c++的编译器。cc通常是一个符号链接,指向gcc。 
CC通常是makefile里面的一个名字,具体是什么根据实际状况决定。 
gcc和g++都是GNU(组织)的一个编译器。 

误区一:gcc只能编译c代码,g++只能编译c++代码 
二者均可以,可是请注意: 
1,后缀为.c的,gcc把它看成是C程序,而g++看成是c++程序;后缀为.cpp的,二者都会认为是c++程序,注意,虽然c++是c的超集,可是二者对语法的要求是有区别的。C++的语法规则更加严谨一些。 
2,编译阶段,g++会调用gcc,对于c++代码,二者是等价的,可是由于gcc命令不能自动和C++程序使用的库联接,因此一般用g++来完成连接,为了统一块儿见,干脆编译/连接通通用g++了,这就给人一种错觉,好像cpp程序只能用g++似的。 

误区二:gcc不会定义__cplusplus宏,而g++会 
实际上,这个宏只是标志着编译器将会把代码按C仍是C++语法来解释,如上所述,若是后缀为.c,而且采用gcc编译器,则该宏就是未定义的,不然,就是已定义。 

误区三:编译只能用gcc,连接只能用g++ 
严格来讲,这句话不算错误,可是它混淆了概念,应该这样说:编译能够用gcc/g++,而连接能够用g++或者gcc -lstdc++。由于gcc命令不能自动和C++程序使用的库联接,因此一般使用g++来完成联接。但在编译阶段,g++会自动调用gcc,两者等价。 

请问CC cc gcc g++本质区别在什么地方? 
传统上, UNIX OS 会配带 C compiler by default. 通常用符号名 cc. 而C++ compiler 须要另外买. 
常见的有: 
Linux: gcc/g++ 
Solaris: cc/CC 
HP-UX: aCC 
AIX: xlc/xlC 
SCO: ?/? 
几乎全部的状况, C/C++ compiler 都只是front end driver. 后面的编译器是同样的. 好比gcc, g++ 提供不一样的选项给编译器以及link editor. 这些包括用户选项, 缺省选项, 对应的缺省系统库. 每一个compiler有一个configuratoin file来指定这些缺省选项. 使用 verbose mode (-v) 能够看到这些内容. 
C++ 程序由于语法(namespace, class, overload...), 须要mangle 全部的symbol name. 与C程序link的时候须要用extern "C". 
C++的编译器确定能够编译C的的代码,注意除了C++对C的语法扩充以外,编译和连接C和C++的标准库一般也不同呢。我用gcc而非g++也编译了C++的程序就证实了这一点。
相关文章
相关标签/搜索