首页 > 试题广场 >

define和inline有什么区别?

[问答题]
1:宏define在预处理阶段完成;inline在编译阶段
2:类型安全检查
    inline函数是函数:要做类型检查;
3:替换方式
    define字符串替换;inline是指嵌入代码,在编译过程中不单独产生代码,在调用函数的地方不是跳转,而是把代码直接写到那里去,对于短小的函数比较实用,且安全可靠。
发表于 2015-06-18 14:18:11 回复(0)
    内联函数和普通函数相比可加快程序运行速度,因为不需要中断调用,在编译时内联函数可直接被嵌入到目标代码中。而宏只是一个简单替换。
    内联函数要做参数类型检查,宏没有。
    inline一般用于:
    1.一个函数不断的被重复调用
    2.函数只有简单的几行,且函数内不包含for、while、switch语句
发表于 2017-08-08 19:15:04 回复(0)
本质:define只是字符串替换,inline由编译器控制,具体的:
• define只是简单的宏替换,通常会产生二义性;而inline会真正地编译到代码中
• inline函数是否展开由编译器决定,有时候当函数太大时,编译器可能选择不展开相应的函数
发表于 2015-05-05 14:22:40 回复(0)
http://www.cnblogs.com/fengkang1008/p/4746157.html
集前人之大成。
发表于 2015-08-21 14:51:53 回复(0)
define:字符串替换
inline:内联函数,编译器进行代码替换

define:预编译阶段;inline:编译阶段
define:无类型,不安全检查;inline:有类型,安全检查
define:替换字符串;inline:替换代码
发表于 2015-07-26 10:43:34 回复(0)

define: 定义预编译时处理的宏
    只进行简单的字符替换,无类型检测

inline: 内联函数对编译器提出建议,是否进行宏替换,编译器有权拒绝

  既为提出申请,不一定会成功

发表于 2015-07-16 17:04:35 回复(0)
1、inline关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义。
2、内联函数要做类型安全检查,而宏函数没有类型安全检查
inline是指嵌入代码,在调用函数的地方不是跳转,而是把代码直接写到那里去,对于短小的函数来说,inline函数可以得到一定效率的提升,和c时代的宏函数相比,inline函数更加安全可靠,这个是以增加空间的消耗为代价的。
宏不是函数,只是在编译前把有关字符串替换成宏体
内联函数是函数,但在编译中不单独产生代码,而是将代码嵌入调用处
发表于 2015-07-08 09:58:34 回复(0)
1.类型安全检查
    define宏没有类型,不做类型检查
    inline内联函数需要做类型安全检查
2.替换方式不同
    define宏不是函数,只是在预处理时把有关字符串替换成宏体
    内联函数是函数,但在编译中不单独产生代码,而是将代码嵌入调用处
发表于 2015-06-12 09:27:20 回复(0)
内联函数要做类型安全检查,而宏函数没有类型安全检查
inline是指嵌入代码,在调用函数的地方不是跳转,而是把代码直接写到那里去,对于短小的函数来说,inline函数可以得到一定效率的提升,和c时代的宏函数相比,inline函数更加安全可靠,这个是以增加空间的消耗为代价的。
宏不是函数,只是在编译前把有关字符串替换成宏体
内联函数是函数,但在编译中不单独产生代码,而是将代码嵌入调用处
发表于 2015-05-30 08:50:57 回复(0)
define 的话是简单的字符串替换,inline的是将调用函数的函数体拷贝到调用的位置,但是这个拷贝是编译器决定的,也就是说,为了提高效率,编译器可能不进行拷贝,而进行函数的调用。另外define不能进行安全检查,所以,inline会更加安全一些
发表于 2015-05-29 10:26:00 回复(0)