gcc和g++的区别

本文主要介绍了gcc与g++使用中的四个误区。包括二者并非只能编译特定代码,gcc和g++对不同后缀文件有不同处理;gcc和g++对__cplusplus宏的定义情况;编译和链接并非只能用特定命令;extern \C\与gcc/g++并无关系,还给出了g++与gcc的等价命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

误区一: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值