预处理器:如何使用列表来定义变量和函数输入
Preprocessor: How to use a list to definition of variables and function input
我有三个列表,一个带有整数变量(ilist),一个带双变量(dlist),另一个带有带有特定初始值的std::字符串变量(slist)。示例:ilist=(ilist1=init_val_1)(ilist2=init_val_2)
预处理器是否可以生成如下代码:
int ilist1=init_val_1;
int ilist2=init_val_2;
...
int ilistn=init_val_n;
double dlist1=dnit_val_1;
double dlist2=dnit_val_2;
f(ilist1, ilist2, ilist3, ..., ilistn, dlist1, dlist2);
我可以在这个项目中使用boost(boost::预处理器)。
当我刚开始编程时,我一直在寻找快速、安全地定义许多类似变量的方法。现在,我意识到,几乎无一例外,最好使用数组std::array
或std::vector
——它更容易理解和使用,即使有一些使用预处理器的讨厌的方法。
FWIW,这立刻浮现在脑海中:
#define I(x) int ilist##x=init_val_##x
I(1);
I(2);
//[...]
#undef I //to avoid accidentally using it later in the code
#define D(x) double dlist##x=dnit_val_##x;
D(1);
D(2);
#undef D
像这样需要大量变量的函数几乎肯定需要一个数组,std::array
或std::vector
,或者两个。
相关文章:
- 用C++中的一个变量定义一个常量
- 变量定义到C++布尔值转换
- 未声明的标识符错误,但变量定义正确 (?)
- C++多线程程序:变量定义为类成员的隔离错误
- 将变量定义为静态时,为什么可以多次定义它
- 初始值设定项列表与构造函数赋值与变量定义
- 如何根据传递给函数的变量定义特征矩阵大小
- C++ 描述如何使用来简化变量定义
- 如何转发声明依赖于变量定义的类,而变体定义又依赖于模板化类?
- 是否修改其声明语句中的变量定义良好
- 使用类的其他成员变量定义类的成员变量数组
- 是否可以通过全局变量定义具有可变参数数的函数中的参数数量
- 元组 std::get() 不适用于变量定义的常量
- 全局使用变量定义和C 声明
- C++变量定义中的易失性类型量词位置
- 将变量定义为数组和正确的语法
- 多个,包括具有变量定义的头文件
- 调用构造函数,并将成员作为参数解析为变量定义
- 逗号分隔变量定义中关系前的序列
- 如何使用命名变量定义常量右值引用参数的默认值