哪个是更快的内联函数或MACRO

时间:2016-05-30 15:27:51

标签: c++ c performance function macros

我相信预编程器会在编译之前将宏扩展为代码中的复制文本,无论它在何处调用,而编译器会在每个函数调用中编写已编译函数定义的副本。因此,在这两种情况下,我们都避免了常规函数调用的开销,但在这种情况下哪个更快且开销更少,内联函数或MACRO?

1 个答案:

答案 0 :(得分:2)

宏只会“更快”,因为它不会留给编译器启发式是否内联宏。鉴于宏的缺点,通常最好将此决定留给编译器。调试级别和相应的源代码也存在问题。优化级别,“强制”内联,例如__attribute__ ((__always_inline__))(gcc / clang)。更重要的是,您可以避免常见的陷阱,例如宏中的多表达式扩展/评估。

我还没有做过S.O.问题搜索(你应该养成做的习惯),但我怀疑这个问题早已得到解答,更详细!

相关问题