定义新类型最好用typedef ,因为define 不能处理指针类型 #define pointer char * Pointer a,b; //这里只有a指针,b 不是,pointer 中是被char * 简单的替换而已 使用#define时要记得加小括号,否则会出现意想不到的错误 例如: #define SQUARE(x) x*x 如果在上述声明之后,你把SQUARE(5)置于程序中,预处理器就会用下面这个表式替换上面的表达式: 5 * 5 警告: 但是,这个宏存在一个问题,鸡窝下面的代码段: a = 5; printf("%d\n",SQUARE(a+1)); 头一看,你可能觉得这代码将打印36,但事实上,它将打印11,想知道为什么?请观察被替换的宏文本,参数x被文本a+1替换,所以这条语句 实际上就变成 了 printf("%d\n",a+1 * a+1);
|