宏和 C++
C++ 提供了新功能,其中一些功能取代了 ANSI C 预处理器提供的功能。 这些新功能可增强语言的类型安全性和可预见性:
在 C++ 中,声明为
const
的对象可用于常量表达式。 它使程序可以声明具有类型和值信息的常量。 它们可以声明可以用调试器以符号方式查看的枚举。 当你使用预处理器#define
指令定义常量时,它不是那么的精确,也并不是类型安全的。 除非程序包含采用const
对象的地址的表达式,否则不会为该对象分配存储区。C++ 内联函数功能取代了函数类型宏。 使用内联函数取代宏的好处如下:
类型安全。 内联函数需要接受与常规函数相同的类型检查。 宏不是类型安全的。
纠正具有副作用的参数的处理。 内联函数将计算在输入函数体前作为自变量提供的表达式。 因此,具有副作用的表达式不可能不安全。
有关内联函数的详细信息,请参阅 inline、__inline 和 __forceinline。
出于向后兼容性的原因,将为 Microsoft C++ 保留存在于 ANSI C 以及更早的 C++ 规范中的所有预处理器工具。