了解gcc和g++

本文介绍了__cplusplus宏定义的作用及其与C++编译的关系,解析了GCC、GNU、gcc及g++的概念与区别,重点阐述了gcc与g++在编译与链接过程中的不同之处。

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


1.什么是__cplusplus;

__cplusplus是gcc编译器在编译.cpp文件或g++在编译.c/.cpp文件时需要加入的宏定义;这个宏定义标志着编译器会把代码按C++的语法来解释。

2.什么是GCC,什么是GNU;

GCC全称为GNU Compiler Collection,即GNU编译器集合,它通过各种编译器来编译C、C++、JAV、Fortran、Pascal、Object-C、Ada等多种语言。GNU是一个类Unix操作系统。它是由多个应用程序、系统库、开发工具乃至游戏构成的程序集合。有关GNU的详细内容请查找下列网站:The GNU Operating System and the Free Software Movement

3.什么是gcc,什么是g++;

gcc是GCC中的GUN C Compiler(C编译器);

g++是GCC中的GUN C++ Compiler(C++编译器);

事实上,虽然gcc和g++叫做xxx编译器,但它们只是一种驱动器,根据要编译的文件类型去调用对应的GUN编译器。

4.gcc和g++的区别

(1)gcc可以编译.c文件和.cpp文件,并且gcc会区分它们,分别当作c和cpp文件编译;

g++也可以编译.c文件和.cpp文件,但是g++不区分它们,都当做cpp文件编译。

(2)编译时,gcc和g++都可以使用,因为编译阶段时g++会调用gcc进行编译;

链接时,g++可以使用,gcc需要添加"-lstdc++"才可以使用,因为gcc不能自动和C++库链接,所以一般使用g++进行链接;

(3)gcc在编译cpp文件时、g++在编译c文件和cpp文件时,gcc和g++调用的都是cpp文件的编译器,且会加入一些额外的宏定义,宏定义如下:

#define __GXX_WEAK__ 1
#define __cplusplus 1
#define __DEPRECATED 1
#define __GNUG__ 4
#define __EXCEPTIONS 1
#define __private_extern__ extern

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值