X-宏

期望 X-macro 风格的主宏的用户为内部 X() 宏提供他自己的定义,并在其范围内扩展主宏。因此,根据用户对 X() 的定义扩展了主人的内部宏引用。通过这种方式,可以减少源文件中重复样板代码的数量(在 X() 的替换文本中只出现一次),这是不要重复自己(DRY)哲学的拥护者所青睐的。

此外,通过重新定义 X() 并将主宏扩展一次或多次,X 宏可以促进维护相应的数据和代码 - 宏的一次扩展声明数据(例如,作为数组元素或枚举成员),另一个扩展产生相应的代码。

尽管“X-macro”名称来自内部宏的传统名称,但该技术并不依赖于该特定名称。可以使用任何有效的宏名称。

批评包括

  • 依赖 X 宏的源文件更难以阅读;
  • 像所有的宏一样,X 宏是严格的文本 - 它们本身并不提供任何类型的安全性; 和
  • X 宏提供代码生成。与基于调用函数的替代方法相比,X 宏有效地使代码更大。

关于 X 宏的一个很好的解释可以在 Randy Meyers 的 Dobbs 博士的文章[X-Macros]中找到( http://www.drdobbs.com/the-new-cx-macros/184401387)