如果我在运行时在字符串中有变量的名称,如何获取变量的地址?

时间:2015-12-30 07:06:36

标签: c

我期待下面的事情。

int genVar001, genVar002, genVar003;
int adrgenVar, status;
char strvariable[] =  "genVar001";

status = somefunction(&strvariable, adrgenVar);

adrgenVar '将拥有genVar001的地址。如果变量不可用,则状态应返回错误。

为什么需要它:用于操作运行时的值(通过键盘或文件)。

查找表对我没用,因为它会增加工作量;如果添加任何新内容,则维护该表。

修改 我正在使用PLC,Here是允许我这样做的库。 功能:PV_xgetadr。

1 个答案:

答案 0 :(得分:1)

C标准中没有任何内省功能,没有办法以便携方式实现您的目标。而不可移植的方式(如使用可执行文件的调试信息或符号表)将是一个糟糕的主意。

但这并不意味着没有解决方案。根据您的变量名称判断,您应该做的是:

int genVar[3];

然后,您可以在运行时动态索引到该数组。如果这不够灵活,请使用链接列表或哈希映射 - 有很多可用于C的实现(尽管标准中没有)。