预处理器之条件编译
一. 认识预编译指令
条件编译相关的预编译指令有如下几个:
#define 定义一个预处理宏
#undef 取消宏的定义
#if 编译预处理中的条件指令,类似于if
#ifdef 判断某个宏是否已经被定义,若被定义,执行之后的语句(是if not defined的缩写)
#ifndef 和ifdef相反,若某个宏为被定义,执行之后的语句(是if defined的缩写)
#elif 若#if, #ifdef, #ifndef或前面的#elif条件不满足,则执行#elif之后的语句,类似于else-if,是(else if的缩写)
#else 若与#if, #ifdef, #ifndef对应, 若这些条件不满足,则执行#else之后的语句,类似于else
#endif #if, #ifdef, #ifndef这些条件命令的结束标志
defined 与#if, #elif配合使用,判断某个宏是否被定义
defined使用举例
#if defined(MAX) && !defined(MIN)
二. 常用的条件编译方法
最常见的条件编译使用ifdef和ifndef,用于防止重复包含头文件的宏
#ifndef _AB_CD_H
#defind _AB_CD_H
//declaration codes
#endif //_AB_CD_H
从理论上讲可以出现在任何地方(头文件和实现文件),通常为了防止头文件被多次包含,在头文件中使用是必须的。
头文件的标识(即上面的_AB_CD_H)在理论上来说可以是自由命名的,但每个头文件的这个“标识”都应该是唯一的。标识的命名规则一般是头文件名全大写,并把文件名中的“.”也变成下划线(也有前后还要加上下划线的写法),如:stdio.h变为STDIO_H
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)