面试经典:typedef vs 宏定义:指针类型安全大比拼

张开发
2026/4/18 18:35:10 15 分钟阅读

分享文章

面试经典:typedef vs 宏定义:指针类型安全大比拼
typedef 与宏定义中int*的区别类型安全性typedef 创建了新的类型别名编译器会进行类型检查。 宏定义只是简单的文本替换没有类型检查。作用域typedef 遵循 C/C 的作用域规则可以在特定作用域内使用。 宏定义没有作用域概念从定义点开始到文件末尾都有效。指针声明typedef 定义的指针类型在声明多个变量时更安全typedef int* IntPtr; IntPtr a, b; // a 和 b 都是 int* 类型宏定义可能导致意外结果#define INT_PTR int* INT_PTR a, b; // 实际展开为 int* a, b; 只有 a 是指针调试信息typedef 会在调试信息中保留类型信息。 宏定义在预处理阶段就被替换调试时看不到原始定义。复杂类型定义typedef 更适合定义复杂类型typedef int (*FuncPtr)(int, int);宏定义实现相同功能会更复杂且易出错。建议在需要定义指针类型时优先使用 typedef 而不是宏定义可以提高代码的可读性和安全性。

更多文章