如何多次追加到宏
How do I append to a macro multiple times?
使用boost preprocessor
库,我可以做这样的事情:
#define ARRAY (3, (a, b, c))
BOOST_PP_ARRAY_PUSH_BACK(ARRAY, d) // this expands to a, b, c, d
但是我如何多次这样做呢?假设我想在代码的不同部分多次执行push_back
,然后显示结果?
下面的代码只打印出dummy
:
#include <boost/preprocessor.hpp>
#include <vector>
#include <algorithm>
#define ARRAY (1, (dummy))
BOOST_PP_ARRAY_PUSH_BACK(ARRAY, 1)
BOOST_PP_ARRAY_PUSH_BACK(ARRAY, 1)
BOOST_PP_ARRAY_PUSH_BACK(ARRAY, 1)
int main()
{
std::cout << BOOST_PP_ARRAY_ENUM(ARRAY);
return 0;
}
BOOST_PP_ARRAY_PUSH_BACK
实际上并没有修改ARRAY
;它只是扩展到添加了新元素的ARRAY
。例如,给定:
#define ARRAY (1, (dummy))
:
BOOST_PP_ARRAY_PUSH_BACK(ARRAY, 1)
扩展:
(2, (dummy, 1))
但ARRAY
仍将扩展为:
(1, (dummy))
不能通过宏替换来修改ARRAY
的替换列表
相关文章:
- 在c++中多次调用方法
- 在多次运行中获得一致的callgrind输出
- 在 openGL 中多次绑定缓冲区
- 如何多次询问来自QML对话框的输入?
- 如何使用运算符在同一行中多次调用函数
- C++如何在多次执行后记住过去给出的输入
- 在C++中多次调用相同的 lambda
- 如何使用多次 memcpy 转换回 std::vector<unsigned char>?
- 多次实现成员功能
- 函数被多次调用
- 在 c++ 中多次更改字符串列表
- 当要访问的对象被多次封装时,如何正确使用setter
- 如果包含映射的静态库与可执行文件和动态库链接,静态映射(变量)是否会被多次释放?
- 如何在派生构造函数中多次构造基类
- 多次拨打ruby_init和ruby_finalize
- 如何多次使用Clang LibTooling
- C++,从文件读取到结构,然后读取到向量(结构被推入向量太多次,而不仅仅是一次)
- std::async 如何工作:为什么它会调用这么多次复制/移动?
- GetDIBits 在屏幕捕获函数中多次迭代后返回零
- 如何多次追加到宏