我期待下面的事情。
int genVar001, genVar002, genVar003;
int adrgenVar, status;
char strvariable[] = "genVar001";
status = somefunction(&strvariable, adrgenVar);
adrgenVar '将拥有genVar001的地址。如果变量不可用,则状态应返回错误。
为什么需要它:用于操作运行时的值(通过键盘或文件)。
查找表对我没用,因为它会增加工作量;如果添加任何新内容,则维护该表。
修改 我正在使用PLC,Here是允许我这样做的库。 功能:PV_xgetadr。
答案 0 :(得分:1)
C标准中没有任何内省功能,没有办法以便携方式实现您的目标。而不可移植的方式(如使用可执行文件的调试信息或符号表)将是一个糟糕的主意。
但这并不意味着没有解决方案。根据您的变量名称判断,您应该做的是:
int genVar[3];
然后,您可以在运行时动态索引到该数组。如果这不够灵活,请使用链接列表或哈希映射 - 有很多可用于C的实现(尽管标准中没有)。