内联函数vs #define

时间:2011-06-19 13:29:15

标签: c++ inline

  

可能重复:
  Inline functions vs Preprocessor macros

在C ++中,内联函数限定符基本上将函数替换为#define指令,而不是一次又一次地调用函数。从而减少了开销时间,但同时增加了程序大小。

如果我对内联函数的理解是正确的,那么内联函数和#define有什么不同?

1 个答案:

答案 0 :(得分:2)

  • inline只是一个提示,编译器可以自由忽略

  • #define s不是编译器级别的功能 - 它们是替换,而不是函数

    • 为了安全地将多个语句放在宏中,必须将其包装在do { ... } while(0)
    • 每次使用宏时,都会重新评估宏的参数。
    • 宏可以访问调用者范围中的名称