【发布时间】:2017-08-09 06:27:46
【问题描述】:
我在 C99 代码中使用 P99 中定义的 P99_FOR 宏来迭代 VA_ARGS。效果很好。
P99_FOR(NAME, N, OP, FUNC,...)
现在想迁移到C++11,想知道有没有类似P99_FOR的宏。
这是我在 C99 中的代码:
#ifndef __cplusplus
#include "p99/p99.h"
#undef P00_VASSIGN
#define P00_VASSIGN(NAME, X, I) NAME[I] = X
#define FOREACH(x, y, z, u, ...) P99_FOR(x, y, z, u, __VA_ARGS__);
#else
#define FOREACH(x, y, z, u, ...) ??? // C++ equivalent
#endif
#define set_OCTET_STRING(type, numParams, ...) { \
FOREACH(type, numParams, P00_SEP, P00_VASSIGN, __VA_ARGS__); \
}
例如set_OCTET_STRING(myVar->speed, 3, 34, 10, 11) 将扩展为:
myVar->speed[0] = 34; myVar->speed[1] = 10; myVar->speed[2] = 11;
【问题讨论】:
-
您在寻找类似this (va_arg-doc) 的东西吗?还是您正在寻找更简单的版本?
-
我已经知道 va-arg。我不想使用任何功能。
-
请给我们看一些sample code。
-
也许您想使用更现代的技术(模板、lambdas)编写自己的
P99_FOR版本。如果您提供代码示例,也许 SO 社区可以帮助您。