代码之家  ›  专栏  ›  技术社区  ›  UnTraDe

内联等于#define函数吗?

  •  0
  • UnTraDe  · 技术社区  · 11 年前

    inline int GetNumber(int i) { return mNumbers[i]; }; 等于: #define GetNumber(i) mNumbers[i] 从机器指令的角度来看?

    mNumbers 定义如下: std::vector<int> mNumbers .

    2 回复  |  直到 8 年前
        1
  •  4
  •   Cheers and hth. - Alf    11 年前

    inline 有一个保证的效果:它允许您在多个翻译单元中定义相同的函数(相同),然后要求在使用该函数的每个翻译单元中都定义该函数。

    内联 也用作 暗示 函数的调用应该在机器代码级别内联,但是

    • 该提示可以被自由忽略,并且在递归函数的情况下,

    • 机器代码调用内联与宏扩展不同,尤其是宏不尊重作用域。

    也许我能给你的最重要的建议是 停止微优化的烦恼 。这还为时过早。过早的优化是有害的。

        2
  •  2
  •   Some programmer dude    11 年前

    不会。预处理器宏的替换类似于文本编辑器中的查询替换,并且在代码传递给编译器之前。内联函数 也许 将他们的代码插入到呼叫站点的适当位置。虽然它们看起来很相似,但却截然不同。