预编译 清爽的举例

预编译可以防止重复引用或者重复定义
有 #ifndef 和 #if
另一种就是 #pragma once,在文件第一行加上即可,例如VS2017在新建头文件后都自带此句

#ifndef 假(未编译)
执行内容
#endif

#ifndef 真(已编译)
不执行内容
#endif

#if 真
执行内容
#endif

#if 假
不执行内容
#endif
#ifndef 给头文件起个名NAME
#define NAME

/*头文件内容*/

#endif

举例:一个叫 fun.h 的头文件,被 A 文件和 B 文件同时引用,那么这个 fun.h 这么写

/*如果 FUN 已经存在(已编译),就跳过 ,否则编译*/
#ifndef FUN
#define FUN

void hello()
{
	printf("hello world");
}

#endif

其实它们里面还可以包含若干个 #if 或者 #ifndef 结构
例如上面的 fun.h 头文件:

/*如果 FUN 已经存在(已编译),就跳过 ,否则编译*/
#ifndef FUN
#define FUN

void hello()
{
	printf("hello world");
}

/*如果 N 已经存在,就定义 M ,否则跳过*/
#if N
	#define M 5
#endif	//#if的


#endif	//#ifndef的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值