#define - C语言预处理指令

本文介绍了C语言中#define的用法,包括定义标识符、宏以及替换规则。宏定义允许将参数替换到文本中,但应注意防止参数求值的副作用。同时,文章提到了#define与函数定义的区别,并展示了#undef如何移除宏定义。
摘要由CSDN通过智能技术生成

目录

         #define定义标识符

         #define定义宏

          #define 替换规则

          #define定义宏和函数的区别


#define定义标识符

例:

#define MAX 1000

#define reg register          //为 register这个关键字,创建一个简短的名字

#define do_forever for(;;)     //用更形象的符号来替换一种实现

#define CASE break;case        //在写case语句的时候自动把 break写上。

// 如果定义的 stuff过长,可以分成几行写,除了最后一行外,每行的后面都加一个反斜杠(续行符)。
#define DEBUG_PRINT printf("file:%s\tline:%d\t \
                          date:%s\ttime:%s\n" ,\
                          __FILE__,__LINE__ ,  \
                          __DATE__,__TIME__ ) 

#define定义宏

        #define 机制包括了一个规定,允许把参数替换到文本中,这种实现通常称为宏(macro)或定义宏(definemacro)。

下面是宏的申明方式:
 

#define name( parament-list ) stuff

其中的 parament-list 是一个由逗号隔开的符号表,它们可能出现在stuff中。
注: 参数列表的左括号必须与name紧邻。

如果两者之间有任何空白存在,参数列表就会被解释为stuff的一部分。

注:

  •       用于对数值表达式进行求值的宏定义都应该用这种方式加上括号,避免在使用宏时由于参数中的操作符或邻近操作符之间不可预料的相互作用。

#define 替换规则

在程序中扩展#defifine定义符号和宏时,需要涉及几个步骤。

1. 在调用宏时,首先对参数进行检查,看看是否包含任何由#defifine定义的符号。如果是,它们首先被替换。

2. 替换文本随后被插入到程序中原来文本的位置。对于宏,参数名被他们的值替换。

3. 最后,再次对结果文件进行扫描,看看它是否包含任何由#defifine定义的符号。如果是,就重复上述处理过程。

注意:

1. 宏参数和#defifine 定义中可以出现其他#defifine定义的变量。但是对于宏,不能出现递归。

2. 当预处理器搜索#defifine定义的符号的时候,字符串常量的内容并不被搜索。

例:

#undef

移除宏定义

例:

#define定义宏和函数的区别

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值