宏定义只是简单的字符串代换, 是在预处理完成的, 而 typedef 是在编译时处理的, 它不是作简单的代换, 而是对类型说明符进行重新命令. 被命名的标识符具有类型定义说明的功能.
- #include<stdio.h>
- #include<iostream>
- #define PIN1 char*
- typedef char* PIN2;
- int main() {
- // 使用 #define 相当于: char* x, y; 就是说 x 是 char 指针类型, 而 y 是 char 类型
- PIN1 x, y;
- // 使用 typedef 相当于: char* x, char* y; 就是说 x 是 char 指针类型, 而 y 也是 char 指针类型
- PIN2 a, b;
- printf("By #define :%d %d\n\n", sizeof(x), sizeof(y));
- printf("By typedef :%d %d\n\n", sizeof(a), sizeof(b));
- system("pause");
- return 0;
- }
输出:
来源: http://www.bubuko.com/infodetail-3360227.html