【问题标题】:Is it possible to define variable with a name from string [duplicate]是否可以使用字符串中的名称定义变量[重复]
【发布时间】:2014-06-10 08:06:41
【问题描述】:

我正在寻找一种从用户那里获取 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()...

有什么方法可以实现吗?

谢谢。

编辑: 解决方案不必是完全动态的,我可以接受一些假设,例如使可用变量严格,即只有一组允许的变量名。

【问题讨论】:

  • 不认为有办法做到这一点。但是如果可能的话,调试会很痛苦
  • 调试不是问题...
  • 简单明了:在 C 中不可能,但是看到 asm 可能会提供这样的功能。看起来很有趣

标签: c variables


【解决方案1】:

在 C 中你不能直接这样做。

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

程序运行时,变量名不见了。编译器只需要它们来知道你想做什么,引用各种数据。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 2018-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多