用途:
源程序在编译之前,由预处理程序对我们写的源代码进行处理,将函数中出现宏名的地方,用宏定义时的字符串替换,注意替换的时候,定义的是什么样的就要替换成什么样,就是一个简简单单的替换。不能人为的添加任何东西比如括号
宏分类:
有参宏:#define TEST(a,b) a+b 无参宏:#define TEST 9
宏定义的使用注意:
- 有参宏的宏名和形参之间不能有空格
- 宏定义是系统指令,后面不能有分号
- 有参宏宏的参数最好用括号括起来
- 宏名习惯全大写
- 有参宏的形参不会分配内存空间,故不用指定其类型
- 宏是有作用域的 #undef 宏名 可以取消宏定义,取消后宏名在该源程序就失效
宏和typedef的区别:
宏就是一个简单的替换,而typedef是为一个类型指定了新的名字,它就代表了一个数据类型,可
以用来定义变量
范例:
#include <stdio.h>
#define INT1 int* //定义一个宏,宏名是INT1
typedef int* TINT; //int起一个别名 TINT
int main(int argc, const char * argv[]) {
int num = 10;
//使用宏定义变量
INT1 a,b; //int* a,b
//a是指针
a = #
//b是普通的变量
b = num;
printf("a = %d,b = %d\n",*a,b);
//使用别名定义变量
TINT a1,b1; //int *a1;int* b1;
a1 = #
b1 = # //a1 和 b1 都是指针
printf("a1 = %d,b1 = %d\n",*a1,*b1);
return 0;
}
本文介绍了C语言中宏定义的一些关键注意事项,包括有参宏的宏名与形参间不应有空格、宏定义后不应加分号、推荐使用括号包裹参数、宏名通常全大写以及宏的作用域和如何通过`#undef`取消宏定义。
1379

被折叠的 条评论
为什么被折叠?



