从机器指令的角度来看,inline int GetNumber(int i) { return mNumbers[i]; };
是否等于:#define GetNumber(i) mNumbers[i]
?
mNumbers
以这种方式定义:std::vector<int> mNumbers
。
答案 0 :(得分:4)
没有
inline
有一个保证效果:它允许您在多个翻译单元中定义相同的功能(相同),然后要求在每个使用它的翻译单元中定义该功能。
inline
也可以作为提示,应该在机器代码级别内联函数调用,但
该提示可以自由忽略,并且在递归函数的情况下,某些调用必须忽略逻辑,
机器码调用内联与宏扩展不一样,特别是宏不尊重范围。
也许我能给你的最重要的建议是停止对微优化的担忧。现在还为时过早。而过早的优化是邪恶的。
答案 1 :(得分:2)
没有。预处理器宏在文本编辑器中被替换为查询替换,并且在代码传递给编译器之前。内联函数可以将其代码插入到调用站点上。虽然它们看起来很相似,但却完全不同。