对于C ++,请考虑以下伪代码:
int sampleFunction (int selector)
{
int var_1 = ............ ;
int var_2 = ............ ;
return var_[selector];
}
最后一行等同于代码:
if (selector == 1)
{
return var_1;
}
else if (selector == 2)
{
return var_2;
}
但是我需要在运行时使用另一个变量(selector
)来评估变量名称。
怎么做到这一点?那么,C语言呢?
我通常使用MATLAB命令eval
来执行此操作。
此外,在C#中,这可以通过Reflection实现。
答案 0 :(得分:5)
C ++和C都是编译语言。变量名在运行时不存在。这使你的想法完全不可能。
编译C#,但反射的限制有限。 类型名称可用,但我不认为变量名称。基本上同样的原因让你运气不好。
MATLAB被解释,因此编译时和运行时之间没有区别,因此它具有可用的变量名。价格是MATLAB很慢。
答案 1 :(得分:2)
int sampleFunction (int selector)
{
int var_[] = {1, 2};
return var_[selector];
}
其中1和2分别是var_1
和var_2
的值。