新微赢技术网
标题:
内联函数和宏定义的作用是否相同?
[打印本页]
作者:
√龙
时间:
2009-11-4 00:46
标题:
内联函数和宏定义的作用是否相同?
内联函数和宏定义的作用是否相同?
作者:
ぱホ
时间:
2009-11-4 00:46
怎么可能相同!
举个例子:计算两个对象的最大值
宏定义:#define max(a,b) ((a) > (b) ? (a) : (b))
无论什么时候你写了象这样的宏,你必须记住在写宏体时对每个参数都要加上括号;否则,别人调用你的宏时如果用了表达式就会造成很大的麻烦。但是即使你象这样做了,还会有象下面这样奇怪的事发生:
int a = 5, b = 0;
max(++a, b);// a 的值增加了2次
max(++a, b+10); // a 的值只增加了1次
这种情况下,max内部发生些什么取决于它比较的是什么值!
而用内联就不会:
inline int max(int a, int b) { return a > b ? a : b; }
上面是我看effective C++这本书做的笔记.
作者:
妈妈猪的一天
时间:
2009-11-4 00:46
估计他是问在内存和编译的成面上的问题..是问是不是都是直接的代码替换..
作者:
■■■■■■
时间:
2009-11-4 00:46
是的 主要 是想问问 在内存上 占的空间问题
还有就是 它们被执行时的时间是否相等
除了 宏在编译时 不可见外 是不是和内联没什么区别?
作者:
蓝血腥人
时间:
2009-11-4 00:46
意义上当然不相同,但是在编译为机器指令后的代码是否相同就不太清楚了
欢迎光临 新微赢技术网 (http://bbs.weiying.cn/)
Powered by Discuz! X3.2