
C++
首先,不要使用宏。你编写的是
C++,而不是 C。在
C++ 中,宏不仅没有性能优势,反而会在可调试性和易用性上带来诸多问题。其次,对于仅在局部范围(例如某个 .cpp 文件内)使用的函数,无需特别处理。编译器足够智能,在启用优化的情况下会自动将适合的函数内联。如果你希望确认函数是否真正被内联,可以通过查看编译器生成的汇编代码来验证(MSVC 使用 /Fa 选项,而 GCC/Clang 使用 -S 选项)。对于需要广泛使用的短小函数,可以将其标记为 inline 或 constexpr 并放入头文件中。在现代
C++ 中,inline 的作用是允许一个实体安全地存在于多个源文件中而不违反 One Definition Rule(ODR),而 constexpr 不仅隐含了 inline 的特性,还要求函数必须能够在编译期执行。选择使用 inline 还是 constexpr 取决于你的需求:如果需要在编译期计算结果,或者函数本身不包含任何无法作为 constexpr 的操作(例如输入输出、调用非 constexpr 函数等),那么 constexpr 是更优的选择;否则可以选择 inline。