文章目录
一、#定义标识符
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