社区
C语言
帖子详情
请问在C语言中inline函数和用macro定义的函数之间有什么区别?
cloudwing13
2005-08-03 06:02:48
请问在C语言中inline函数和用macro定义的函数之间有什么区别?
...全文
1076
7
打赏
收藏
请问在C语言中inline函数和用macro定义的函数之间有什么区别?
请问在C语言中inline函数和用macro定义的函数之间有什么区别?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cloudwing13
2005-08-05
打赏
举报
回复
谢谢各位的解释,现在清楚了
jsjjms
2005-08-04
打赏
举报
回复
jixingzhong(瞌睡虫) -->说得已经很详细了。
不过我要补充的是:对于macro定义,只要你稍微注意一下,
使用还是非常好的,本人就偏爱使用macro定义.
贴一经典代码给你:
include <stdio.h>
#define q(o) a[j]o[j+i+7]o[j-i+31]
int a[39];
void main(int i,int j)
{
for(j=9;--j;i>8?printf("%10d ",a[j]):q(|a)||(q(=a)=i,main(i+1,j),q(=a)=0));
}
gogdo
2005-08-04
打赏
举报
回复
楼上的兄弟们说的很清楚了。
UP
jixingzhong
2005-08-03
打赏
举报
回复
inline函数和用macro定义的函数区别
macro定义
只是很初级的一种代换,实现的功能很单一
而且安全性很差,比如类型错误、括号漏写
都会造成很大的错误,
而且错误不容易被发现,隐患很大
inline函数
内联函数要比前者好很多
功能也要全面很多!
罪主要的是
内联函数能够进行安全检查(比如参数类型 等)
如果在能够使用两着的情况之下
推荐使用 内联
不过有两点要注意:
1 内联 是以代码膨胀为代价的,
不是所有的函数都适合用 内联 方式
要考虑函数的实际情况
2 macro定义 也不是说一无是处了
在合适的时候使用 也许会有意想不到的效果
希望楼主不要因为我的 “建议” 把这个打入冷宫
那我就罪过了 呵呵
ningzhiyu
2005-08-03
打赏
举报
回复
megaboy(惹我?把你打成照片!) (
说得对。
函数有很多属性是宏没有的,还有类型检查。简单的宏替换是没有的
基本上就是函数与宏的区别。
但是inline又具有宏一样的速度。
具体可以gcc的文档 C Extensions -》An Inline Function is As Fast As a Macro
megaboy
2005-08-03
打赏
举报
回复
c89不支持内联函数,C99才支持。
由于inline函数具有内部链接,因此数个文件定义相同名字的内联函数不会发生冲突,而类函数宏就不行,会产生重复定义。
inline函数是真正的函数,可以由语句组成;但类函数宏所作的只是替换,不是真正的函数,当然也不能有语句。
doway
2005-08-03
打赏
举报
回复
宏定义是一种纯粹的文字替换,是从 C 遗留下来的东西。
inline 函数正是 C++ 中用来替代 C 预处理器的东西,C++ 的设计者不喜欢预处理器,曾经想尽了办法想使它成为多余的东西。
c语言
c语言
错误表
如何解决
C语言
,
函数
名与宏冲突
代码如下:#include
void f() { printf(“function\n”); }#define f() printf(“
mac
ro
\n”) int main() { f(); //
mac
ro
(f)(); // function return 0;}
函数
名加括号即可! 您可能感兴趣的文章:详解
C语言
中
的#define宏
定义
命令用法简单讲解
C语言
中
宏的
定义
与使用如何在
C语言
的宏
中
使用类型关键字
C语言
中
的内联
函数
(
inline
)与宏
定义
(#define)详细解析
C语言
中
宏
定义
使用的小细节
C语言
宏
定义
使用
C语言
常见编辑错误信息表
收集了各种常见
C语言
编译错误
中
文解释!出学着很必要哦
介绍
c语言
中
条件编译相关的预编译指令
介绍
c语言
中
条件编译相关的预编译指令
C语言
编译出错信息一览表
C编译器查出的源程序错误分为3类:严重错误、一般错误和警告。 严重错误通常是内部编译出错,一般很少出现。一旦发生严重错误,编译立即停止。 一般错误是指程序的语法错误、磁盘或内存存取错误或命令行错误等。 警告指出一些值得怀疑的情况,而这些情况本身又可以合理地作为源程序的一部分。它们不阻止编译的进行,只是产生警告信息。
C语言
70,020
社区成员
243,264
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章