C语言学习小结(10)——预处理

本文详细介绍了C/C++编程中的预处理指令,包括宏定义、文件包含和条件编译。宏定义分为不带参数和带参数的宏,文件包含用于整合多个文件,条件编译则允许根据特定条件选择性地编译代码块。了解这些预处理指令对于提升代码的可维护性和灵活性至关重要。

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

导读

什么是预处理?预处理有什么用?怎么使用宏?

分类

宏定义

#define
#undef

文件包含

#include

条件编译

#if
#ifdef
#else
#elif
#endif

其他

#line
#error
#pragma

宏定义

不带参数的宏定义

宏的作用:定义一个标识符来代表一个字符串。
标识符称为宏名。
替换的过程称为宏替换。
宏替换的操作是在预编译时进行的。
格式

#define 标识符 单词串//标识符就是宏名,用于代替后面的单词串,单词串是宏体,以回车换行为结尾,一般不能用分号结尾。

注意
通常用大写字母来定义宏名,以便区别变量名
进行宏定义时,若单词串太长,需要多行时,可在行尾加上\反斜线换行符
如需终止宏的作用域,可以使用#undef

#define N 10//宏定义
…………
#undef N//宏取消

宏定义可以进行嵌套定义,但不能递归定义
双引号中的字符不能进行宏替换
宏可以重复定义
如果宏是一个表达式,需要用()括起来

带参数的宏定义

这样的宏因为定义成一个函数调用的形式,也称为类函数宏
格式

#define 标识符(参数列表) 单词串//宏和()之间不能有空白符


参数表由一个至多个参数构成,参数只有参数名,没有数据类型,参数之间用逗号隔开

文件包含

将另一个文件的全部内容包含进来

#include<包含文件名>
#include"包含文件名"//或者

可以将多个模块,多个文件集中到一个单独的文件中。
一条包含语句只能指定一个被包含文件
文件包含可以嵌套

条件编译

#if……#endif

#if 条件1
    程序段1
#elif 条件2
    程序段2
……
#else
    程序段n
# endif

注意
#endif必须存在,他是#if的结尾
#elif可以有多个
#if 的条件可以不加()
defined命令

defined(宏名)
defined 宏名

判断某个宏是否定义,只能与#if与#elif配合使用,不能单独使用

#ifdef……#endif

#ifdef 宏名
    程序段1
#elif 
    程序段2
……
#else
    程序段n
# endif

#endif必须存在,他是#if的结尾
#elif可以有多个
#ifdef 宏名与#if defined(宏名)等价

#ifndef……#endif

#ifndef 宏名
    程序段1
#elif 
    程序段2
……
#else
    程序段n
# endif

区别 没有定义为程序段1,与上式相反

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值