【发布时间】:2019-01-17 16:52:04
【问题描述】:
我一直在阅读有关字符串化和令牌粘贴的内容,我试图使用令牌粘贴来访问变量并修改它的值。这样的事情可能吗?
假设变量 a0 和 a1 已定义,并且在运行时我想使用标记粘贴将它们的值打印为 printf("\n\rValue is %d",VAR_PARSER(0));
这就是我所做的。
#include "stdio.h"
#include "stdlib.h"
#define VAR_PARSER(dummyvar,index,value) do{\
dummyvar = index;\
a##dummyvar = value;\
}while(0);
unsigned char a0, a1, dummy;
int main (void)
{
unsigned char ucloopcnt;
for(ucloopcnt = 0; ucloopcnt < 2; ucloopcnt++) VAR_PARSER(dummy,ucloopcnt,(ucloopcnt * 10));
printf("\n\rValue is %d %d",a0,a1);
return 0;
}
现在,在a##dummyvar = value; 这一行,我希望输出分别为a0 = 10; 和a1 = 20;。但似乎它转换为adummy并给出以下错误adummy undeclared (first used in this funciton)
任何人都可以建议我如何实现它,因为我很想解决这个问题。
【问题讨论】:
-
宏用于文本替换;他们不会为您评估变量值。
-
那么,有没有办法在循环中动态访问变量名,因为我试图在最后一步实现这一点?
-
否;宏是编译时操作;您正在尝试使用运行时值评估事物。
标签: c tokenize stringification