欢迎使用Variadic宏数据库。
变分宏数据库,以下简称为VMD,是提供功能增强的可变宏库在Boost预处理器库(Boost PP)中,尤其是与预处理器数据类型。
VMD具有特定功能的预处理器数据类型为空,标识符、数字(标识符子集)、类型(标识符子集)Boost PP数组、Boost PP列表、Boost PP-seqs、Boost聚丙烯元组和序列。前四种是基本的预处理器数据类型,后五种是复合预处理器数据类型。一个序列等于或大于另一个序列预处理器数据类型相互跟随。
表1.1.数据类型及示例
类型
|
例子
|
标识符
|
任意名称
|
数
|
47
|
类型
|
引导_VMD_TYPE_NUMBER
|
阵列
|
(4,(标识符,156,BOOST_VMD_TYPE_identifier)
|
列表
|
(78,(some标识符,(BOOST_VMD_TYPE_TYPE,BOOST_PP_NIL))
|
序列
|
(标识符)(89)(245)
|
元组
|
(any_id,175,BOOST_VMD_TYPE_LIST,高兴,21)
|
序列
|
树59(56,BOOST_VMD_TYPE_SEQ)(128)(火)(小丑)(47,(BOOST_VM D_TYPE_TUPLE,BOOST_PP_NIL))
|
空是指缺少任何预处理标记。展开为的宏没有,如:
#定义 返回_无(x个)
据说是为了回归空虚。相反,宏在被调用时不能接受任何内容,例如:
返回_无()
最后,空可以是任何复合数据类型的一部分,如下所示:
(45,,某个名称)
其中第二个tuple元素为空。
VMD可以识别前面提到的任何预处理器数据类型,并且可以将序列解析为各自的预处理器数据类型。你可以我们问问为什么这很重要。
在Boost PP宏编程中,大量的控制逻辑设计宏基于Boost PP对数字和测试的支持数值,尤其是表示布尔选择的0和1。基本上Boost PP通常使用数值来控制宏中的逻辑设计。
VMD不会以任何方式试图复制Boost PP对测试的支持数字或布尔值0或1的值,但只重用功能。VMD提供的系统超越了Boost PP解码预处理器数据类型,并比较任何预处理器与任何给定值相等的数据类型。这允许设计宏逻辑以更灵活的方式,取决于数据类型和/或数据。如果你对此感兴趣,请继续阅读,了解如何使用VMD进行宏编程。
库的功能可以概括为:
- 提供测试和使用空参数和空参数的更好方法预处理器数据。
- 提供标识符、数字、类型、元组、,数组、列表和序列。
- 提供测试/分析标识符、数字、类型、,元组、数组、列表。和seqs。
- 提供Boost PP中没有的一些有用的可变宏。
该库是一个只有标题的库,库中的所有宏都包含在内通过名称为“vmd.hpp”的单个标头。可以使用单独的标题用于库中的不同功能,并且将在该功能时表示已解释。
库中的所有宏都以序列“BOOST_VMD_”开头,以区分它们来自最终用户可能使用的其他宏。因此,最终用户应不使用任何C++标识符,无论是在宏中还是在其他情况下序列“BOOST_VMD_”。
库的使用仅依赖于Boost PP。库也使用Boost为自己的测试详细介绍lightweighttest.hpp。