是否可以使用字符串中的名称定义变量

时间:2014-06-10 08:06:41

标签: c variables

我正在寻找一种从用户那里获取char *的方法,并使用该字符串来引用我程序中的变量。 这类似于预处理器的粘贴选项##。 比如说我有一个功能: f(int num); 和变量 int x = 1, z = 2;

我希望能够做到以下几点:

int y=f(##arg [1]); \\should be equivalent to: int y=f(x) assuming argv[1] ="x"

或者如果输入是" z"然后将z发送到f()......

有什么办法可以实现吗?

感谢。

编辑: 解决方案不一定非常动态,我可以忍受一些假设,比如使可用变量严格,即只有一组允许的变量名称。

2 个答案:

答案 0 :(得分:4)

你不能直接在C中执行此操作。

C是一种编译的语言,没有内置的内省支持。

程序运行时,变量名称消失了。编译器只需要知道你想要做什么,就可以参考各种数据。

因此,要获得此行为,您必须手动设置某种形式的查找表,其中保存名称(作为字符串),然后自己实现搜索。

答案 1 :(得分:1)

这在C中是不可能的。这是因为它不是反射语言(与Java不同)。编译期间所有变量符号都会丢失。

一种可能性是使用哈希映射来构建符号表以供运行时使用(分别使用变量的名称和指针作为键和值),但考虑到您的用例I'建议不要这样做。