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) 。