define是宏替换,编译后代码中不存在 #define u8 uint_8 意味着程序中所有u8被替换为uint_8,在最终代码中根本不会存在u8这个符号,只有uint_8这个符号。 typedef 是用来定义一种类型的新别名的,它不同于宏(#define),不是简单的字符串替换。它的新名字具有一定的封装性,所以新命名的标识符具有更易定义变量的功能,它是语言编译过程的一部分,但它并不实际分配内存空间。 c语言中文网 知乎提问