typedef 和 #define 都能写“别名”,为什么语义完全不同?
#define 在预处理阶段做 Token 替换,没有类型语义;typedef 在编译阶段为已有类型定义别名,遵守作用域和声明语法。尤其声明多个指针或叠加 const 时,两者展开结果可能完全不同。
01
题干
typedef 和 #define 都能写“别名”,为什么语义完全不同?
请先给出定义,再结合嵌入式工程中的边界、错误现象和验证方式回答。
先用 30–60 秒组织自己的回答,再对照分层解析。
08
#define 在预处理阶段做 Token 替换,没有类型语义;typedef 在编译阶段为已有类型定义别名,遵守作用域和声明语法。尤其声明多个指针或叠加 const 时,两者展开结果可能完全不同。
typedef 和 #define 都能写“别名”,为什么语义完全不同?
请先给出定义,再结合嵌入式工程中的边界、错误现象和验证方式回答。
先用 30–60 秒组织自己的回答,再对照分层解析。