文档介绍:IT-Homer 专栏
成功是优点的发挥,失败是缺点的积累! 不为失败找理由,只为成功找
方法……
gcc和g++的区别
分类: Linux C/C++/C# 2010-06-13 11:03 262人阅读评论(0) 收藏举报
与G++的区别
gcc和g++都是GNU(组织)的一个编译器。
 
误区一:gcc只能编译c代码,g++只能编译c++代码
两者都可以,但是请注意:
,gcc把它当作是C程序,而g++当作是c++程序;,两者都会认为是c++程序,注意,虽然
c++是c的超集,但是两者对语法的要求是有区别的。C++的语法规则更加严谨一些。
,g++,对于c++代码,两者是等价的,命令不能自动和C++程序使用的库联接,
所以通常用g++来完成链接,为了统一起见,干脆编译/链接统统用g++了,这就给人一种错觉,好像cpp程序只能用
g++似的。
误区二:gcc不会定义__cplusplus宏,而g++会
实际上,这个宏只是标志着编译器将会把代码按C还是C++语法来解释,如上所述,,编译
器,则该宏就是未定义的,否则,就是已定义。
误区三:,链接只能用g++
严格来说,这句话不算错误,但是它混淆了概念,应该这样说:/g++,而链接可以用g++ -
lstdc++。命令不能自动和C++程序使用的库联接,所以通常使用g++来完成联接。但在编译阶段,g++会自
,二者等价。
gcc和g++的区别
我们在编译c/c++代码的时候,,有人用g++,于是各种说法都来了,,而c++代码用g++,
或者说编译用 gcc,链接用g++,一时也不知哪个说法正确,如果再遇上个extern "C",分歧就更多了,这里我想作
个了结,毕竟知识的目的是令人更清醒,而不是更糊涂。
误区四:extern "C"/g++有关系
实际上并无关系,还是g++,用extern "c"时,都是以C的命名方式来为symbol命名,否则,都以c++方式
命名。试验如下:
:
extern "C" void CppPrintf(void);
:
#include
#include ""
using namespace std;
void CppPrintf(void)
{
     cout
#include
#include ""       
int main(void)
{
    CppPrintf();
    return 0;
}
1. "C",和g++命名有什么不同
[******@root G++]# g++ -S
[******@root G++]# less
.globl _Z9CppPrintfv        //注意此函数的命名
        .type   CppPrintf, ***@function
[******@root GCC]# gcc -S
[******@root GCC]# less
.glo