【C/C++】为什么要使用#ifndef?

【C/C++】为什么要使用#ifndef?

我们经常可以在头文件(即.h文件)中看到下面几行代码:
例如,在math.h文件中:

#ifndef _MATH_H_
#define _MATH_H_

/*
中间一些定义
*/

#endif

那么,ifndef到底起什么作用呢?

其实,ifndef在编译过程中起作用。比如,两个源文件(.c文件)都包含相同的头文件。编译开始后,当第一个文件被编译后,_MATH_H_就被定义了。当编译第二个文件时,首先判断是否定义过_MATH_H_文件,这个就是ifndef起到的实际作用。如果发现已经定义过了,程序变不会再编译一次math.h文件,起到了避免重复编译的作用(也避免了后面链接时出现大量重复的声明)。

注:如果对于上面叙述中,编译、链接等名词陌生,可以搜索C++编译过程来了解。
所以,我们在编写头文件时,都会加上#ifndef 和#def两行,一般格式如下:

#ifndef 标识
#define 标识

……

#endif

标识的命名:一般开头结尾都是_,中间是文件名的大写。例如, math.h文件。标识可以写成:_MATH_H_这样。

以上就是今天介绍的全部内容啦~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值