社区
C语言
帖子详情
请问在C语言中inline函数和用macro定义的函数之间有什么区别?
cloudwing13
2005-08-03 06:02:48
请问在C语言中inline函数和用macro定义的函数之间有什么区别?
...全文
1081
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语言
- **#operator not followed by
mac
ro
argument name**:在宏
定义
中
,`#`运算符用于将宏参数转换为字符串,如果后面没有跟随宏参数名,就会引发错误。确保`#`后面有正确的宏参数。 - **‘xxxxxxxx’ not an ...
如何解决
C语言
,
函数
名与宏冲突
您可能感兴趣的文章:详解
C语言
中
的#define宏
定义
命令用法简单讲解
C语言
中
宏的
定义
与使用如何在
C语言
的宏
中
使用类型关键字
C语言
中
的内联
函数
(
inline
)与宏
定义
(#define)详细解析
C语言
中
宏
定义
使用的小细节
C语言
宏
定义
...
C语言
常见编辑错误信息表
- **错误描述**:在
定义
数组时,缺少闭合的右方括号。 - **解决方法**: - 在数组
定义
时确保使用正确格式,如`int arr[10];`。 - 检查数组
定义
的完整性和正确性。 **7. Array size too large (数组太大)** - **...
介绍
c语言
中
条件编译相关的预编译指令
但多数 C++ 程序不推荐使用
函数
宏,调试上有一定难度,可考虑使用 C++ 的
inline
代替之。 例如: ```c #define MIN(a,b) ((a)>(b)? (a):(b)) #define SAFE_DELETE(p) {if(NULL!=p){delete p; p = NULL;}} ``` 2. ...
C语言
编译出错信息一览表
在
C语言
编程
中
,编译出错信息是程序员在开发过程
中
必须面对的重要部分。了解这些错误类型和如何解决它们对于提高编程效率至关重要。本篇主要介绍
C语言
编译过程
中
的三类错误:严重错误、一般错误和警告。 1. 严重...
C语言
70,025
社区成员
243,254
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章