1、C语言中的宏定义
#define是预处理器处理的单元实体之—
#define定义的宏可以出现在程序的任意位置
#define定义之后的代码都可以使用这个宏
2、定义宏常量
#define定义的宏常量可以直接使用
#define定义的宏常量本质为字面量
下面的宏常量定义正确吗?
#define ERROR -1
#define PATHl "D:\test\test.c"
#define PATH2 D:\test\test.c
#define PATH3 D:\test\
test.c
3、实例分析
宏定义分析 21-1.c
#define ERROR -1
#define PATH1 "D:\test\test.c"
#define PATH2 D:\test\test.c
#define PATH3 D:\test\
test.c
int main()
{
int err = ERROR;
char* p1 = PATH1;
char* p2 = PATH2;
char* p3 = PATH3;
}
预处理器不会进行语法检查只是简单的文本替换,即这些宏定义都正确!!但编译器会报错!!
4、宏定义表达式
#define表达式的使用类似函数调用
#define表达式可以比函数更强大
#define表达式比函数更容易出错
下面的宏表达式定义正确吗?
#define _SUM_(a, b) (a) + (b)
#define _MIN_(a, b) ((a)
#define _DIM_(a) sizeof(a)/sizeof(*a)
5、实例分析
宏表达式分析 21-2.c
#include
#define _SUM_(a, b) (a) + (b)
#define _MIN_(a, b) ((a)
#define _DIM_(a) sizeof(a)/sizeof(*a)
int main()
{
<