【发布时间】:2017-12-21 12:55:45
【问题描述】:
我正在尝试实现这样的目标:我有
struct {
int var1;
int var2;
int var3;
......
int var31;
}
现在我有一些在运行时读取的整数“r”,我想打印 var##r 的值(即,如果 r=6,从结构中打印 var6),是否可以通过预处理器指令?我知道我可以通过从 var1 的地址 sizeof(int) * r 跳转来做到这一点,但我希望预处理器生成整个 if-else 链,我可以让它以某种方式做到这一点吗?
更新:忘了说,不能修改给定的结构,因此不能使用数组
UPDATE2:我有这些限制(没有数组,nu 跳转),因为最后我正在解析由 clang 生成的语法树,我想在那里有纯 if/else 语句
【问题讨论】:
-
预处理器在运行时不能做任何事情,它只是编译时的事情。
-
忘了说,我不能修改给定的结构代码
-
(&this->var1)[offset]. -
@Christoph:那是便携的吗?
-
它可能不会比this更漂亮了。
标签: c++ preprocessor