39、说⼀下 define、 const、 typedef、 inline 使⽤⽅法?
1、const 与 #define 的区别
const 定义的常量是变量带类型,⽽ #define 定义的只是个常数不带类型;
define 只在预处理阶段起作⽤,简单的⽂本替换,而const 在编译、链接过程中起作⽤;
define 只是简单的字符串替换没有类型检查。⽽const是有数据类型的,是要进⾏判断的,可 以避免⼀些低级错误;
define 预处理后,占⽤代码段空间,const 占⽤数据段空间;
const 不能重定义,而define 可以通过 #undef 取消某个符号的定义,进⾏重定义;
define 独特功能,比如可以⽤来防⽌⽂件重复引⽤。
2、 #define 和别名 typedef 的区别
执⾏时间不同, typedef 在编译阶段有效, typedef 有类型检查的功能; #define 是宏定义,发
⽣在预处理阶段,不进⾏类型检查;
功能差异, typedef ⽤来定义类型的别名,定义与平台⽆关的数据类型,与 struct 的结合使⽤ 等。
#define 不只是可以为类型取别名,还可以定义常量、变量、编译开关等。
作⽤域不同,#define 没有作⽤域的限制,只要是之前预定义过的宏,在以后的程序中都可以使⽤。
⽽ typedef 有⾃⼰的作⽤域。
3、 define 与 inline 的区别
#define是关键字, inline是函数;
宏定义在预处理阶段进⾏⽂本替换, inline 函数在编译阶段进⾏替换;
inline 函数有类型检查,相⽐宏定义⽐较安全;
Last updated