如何将C语言中难以辨识的宏定义盲区问题转化为一个长尾关键词?
- 内容介绍
- 文章标签
- 相关推荐
本文共计937个文字,预计阅读时间需要4分钟。
目录+1、概念+3、函数不是定义+4、定义不是说明或语句+5、定义不是类型定义+6、相关的定义+7、总结+1、概念
目录
- 1、概念
- 3、宏不是函数
- 4、宏定义不是说明或语句
- 5、宏不是类型定义
- 6、与之相关的宏定义
- 7、总结
1、概念
#define命令是C语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。
命令有两种格式:一种是简单的宏定义,另一种是带参数的宏定义。
(1)简单的宏定义:
#define<宏名> <字符串>
#defineVALUE((sizeof(a))/sizeof(a[0]))
(2) 带参数的宏定义
#define<宏名> (<参数表>)<宏体>
#defineMAX(a,b)((a)>(b)?(a):(b))
2、不能忽略宏定义中的空格
下面的宏定义中f是否带了参数呢?
#definef(x)((x)+1)
答案是否定的,在f与(x)之间存在一个空格,导致变成了如下定义。
本文共计937个文字,预计阅读时间需要4分钟。
目录+1、概念+3、函数不是定义+4、定义不是说明或语句+5、定义不是类型定义+6、相关的定义+7、总结+1、概念
目录
- 1、概念
- 3、宏不是函数
- 4、宏定义不是说明或语句
- 5、宏不是类型定义
- 6、与之相关的宏定义
- 7、总结
1、概念
#define命令是C语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。
命令有两种格式:一种是简单的宏定义,另一种是带参数的宏定义。
(1)简单的宏定义:
#define<宏名> <字符串>
#defineVALUE((sizeof(a))/sizeof(a[0]))
(2) 带参数的宏定义
#define<宏名> (<参数表>)<宏体>
#defineMAX(a,b)((a)>(b)?(a):(b))
2、不能忽略宏定义中的空格
下面的宏定义中f是否带了参数呢?
#definef(x)((x)+1)
答案是否定的,在f与(x)之间存在一个空格,导致变成了如下定义。

