社区
C++ 语言
帖子详情
菜问题:内联函数和宏定义的区别
verlongan
2005-01-16 11:03:31
书上说,宏传给它什么值,它就返回什么值,而内联则不然,你传给任何它什么,都转换为int,再返回int,其结果可能截断或精度丢失,这是样的吗?我试了一样,不像书上所说的,给我例子帮我解释一下吧,谢谢。
...全文
92
8
打赏
收藏
菜问题:内联函数和宏定义的区别
书上说,宏传给它什么值,它就返回什么值,而内联则不然,你传给任何它什么,都转换为int,再返回int,其结果可能截断或精度丢失,这是样的吗?我试了一样,不像书上所说的,给我例子帮我解释一下吧,谢谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
verlongan
2005-01-16
打赏
举报
回复
我也这样想,但 《C++程序设计语言教程》--麦中凡 第58页倒数这二段这是这样说的。
liem
2005-01-16
打赏
举报
回复
宏不是函数,只是在编译前(编译预处理阶段)将程序中有关字符串替换成宏体
inline函数是函数,但在编译中不是单独产生代码,而是将有关代码嵌入到调用处
fatalerror99
2005-01-16
打赏
举报
回复
宏在替换的时候只是简单的文字替换,不对参数类型进行检查,而内联函数则需要进行参数类型检查。
bianliuwei
2005-01-16
打赏
举报
回复
宏是在代码处不加任何验证的简单替代,而内联函数是将代码直接插入调用处,而减少了普通函数调用时的资源消耗。
至于楼主说的问题,小弟才疏学浅,没接触过,学习......
fatalerror99
2005-01-16
打赏
举报
回复
内联只是在编译时将函数代码嵌入调用处,其他与其它函数没有区别,没有楼主说的这种性质,楼主可能记错了或理解错了。
《C++ 程序设计语言》中有一段关于宏的叙述很有启发性:
宏在 C 语言里极其重要,而在 C++ 里用得就少多了。关于宏的第一规则是:绝不应该去使用它,除非你不得不这样做。几乎每个宏都表明了程序设计语言里,或者程序里,或者程序员的一个缺陷,因为它将在编译器看到程序的正文之前去重新摆布这些正文。宏也是许多程序设计工具的主要麻烦。所以,如果你使用了宏,你就应该准备着只能从各种工具(如排错系统、交叉引用系统、轮廓程序等)得到较少的服务。
verlongan
2005-01-16
打赏
举报
回复
对不起,我再研究下去,原来书上是这样写的
inline fac(float i) {return i * i);//没有写返回值的。
printf("bb= %d", fact(8.2));//调用
唉,这样的书,作为教材用,有点误人子弟。
playmud
2005-01-16
打赏
举报
回复
因为不是,所以无法举例.怎么会丢失呢,木有道理啊.
greenteanet
2005-01-16
打赏
举报
回复
宏不进行类型的检查,但是内联函数要进行检查.
楼主说的那些我没有见过,也许我见得少.
浅谈
内联函数
与
宏定义
的
区别
详解
内联函数
在运行时可调试,而
宏定义
不可以;2.编译器会对
内联函数
的参数类型做安全检查或自动类型转换(同普通函数),而
宏定义
则不会; 3.
内联函数
可以访问类的成员变量,
宏定义
则不能; 4.在类中声明同时定义的成员...
深入探讨:宏、
内联函数
与普通函数的
区别
内联函数
与带参数
宏定义
的另一个
区别
是,
内联函数
的参数类型和返回值类型在声明中都有明确的指定;而带参数
宏定义
的参数没有类型的概念,只有在宏展开以后,才由编译器检查语法,这就存在很多的安全隐患。 使用...
内联函数
笔记
一、inline 关键字用来定义一个类的
内联函数
,引入它的主要原因是用它替代C中表达式形式的
宏定义
。 表达式形式的
宏定义
一例: #define ExpressionName(Var1,Var2) ((Var1)+(Var2))*((Var1)-(Var2))为什么要取代这种...
内联函数
inline与
宏定义
深入解析
内联函数
的优越性:一:inline定义的类的
内联函数
,函数的代码被放入符号表中,在使用时直接进行替换(像
宏定义
一样展开),没有了调用的开销,效率很高。二:类的内敛函数是一个真正的函数。三:使用
内联函数
inline...
内联函数
和宏的
区别
的分析与总结
内联函数
和宏的
区别
,这是好多新手容易感觉困扰的地方 ,我也曾经困惑,故分享此资料,希望共同进步
C++ 语言
64,643
社区成员
250,606
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章