浅谈C语言中#define的用法

本文详细介绍了C语言中的#define用法,包括定义标识符、宏定义、替换规则、带副作用的宏参数以及宏与函数的对比。讨论了宏定义后是否应加分号、宏参数的副作用等问题,并给出了示例和避坑指南。
摘要由CSDN通过智能技术生成

一、#定义标识符

1.1 语法表示

语法表示:
#define name stuff

1.2 使用方法示例

#define MAX 1000   //1000替换M
#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__ )

1.3 ;的使用

在写代码的时候,一行写完了我们可能习惯性的使用**;,因此在宏定义的时候,也会不由自主的写上;**,但是这种写法可以吗,编译能通过吗?我们来进行一个测试,首先代码附上:

#define MAX 1000;
#define MAX 1000

在这里插入图片描述
我们可以看到编译出问题了,因此我们不建议在宏定义后面加";"

二、定义宏

2.1 什么叫定义宏?

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

2.2 宏的声明方式:

#define name( parament-list ) stuff 其中的 parament-list 是一个由逗号
隔开的符号表,它们可能出现在stuff中。

有一项注意

参数列表的左括号必须与name紧邻。 如果两者之间有任何空白存在,参数列表就会被解释为stuff的一部分。

2.3 使用示例及避雷

使用实例我们先来看一个宏定义:

#define sq(x) x*x
int main()
{
   

	printf("%d\n",sq(11));
	return 0
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值