Inline Functions vs Macros

  • Macro invocations do not perform type checking, or even check that arguments are wellformed, whereas function calls usually do.
  • In C, a macro cannot use the return keyword with the same meaning as a function would do (it would make the function that asked the expansion terminate, rather than the macro). In other words, you cannot make the macro return something which is not the result of the last expression invoked inside it.
  • Since C macros use mere textual substitution, this may result in unintended side-effects and inefficiency due to re-evaluation of arguments and order of operations.
  • Compiler errors within macros are often difficult to understand, because they refer to the expanded code, rather than the code the programmer typed
  • Many constructs are awkward or impossible to express using macros, or use a significantly different syntax. Inline functions use the same syntax as ordinary functions, and can be inlined and un-inlined at will with ease.
  • Debugging information for inlined code is usually more helpful than that of macro expanded code
  • Comments

    Popular posts from this blog

    bb.utils.contains yocto

    Difference between RDEPENDS and DEPENDS in Yocto

    make config vs oldconfig vs defconfig vs menuconfig vs savedefconfig