我正在寻找一种从用户那里获取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()......
有什么办法可以实现吗?
感谢。
编辑: 解决方案不一定非常动态,我可以忍受一些假设,比如使可用变量严格,即只有一组允许的变量名称。
答案 0 :(得分:4)
你不能直接在C中执行此操作。
C是一种编译的语言,没有内置的内省支持。
程序运行时,变量名称消失了。编译器只需要知道你想要做什么,就可以参考各种数据。
因此,要获得此行为,您必须手动设置某种形式的查找表,其中保存名称(作为字符串),然后自己实现搜索。
答案 1 :(得分:1)
这在C中是不可能的。这是因为它不是反射语言(与Java不同)。编译期间所有变量符号都会丢失。
一种可能性是使用哈希映射来构建符号表以供运行时使用(分别使用变量的名称和指针作为键和值),但考虑到您的用例I'建议不要这样做。