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

标签 c variables

<分区>

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

我希望能够执行以下操作:

int y=f(##arg [1]);\\应该等同于:int y=f(x) 假设 argv[1] ="x"

或者,如果输入是“z”,则将 z 发送到 f()...

有什么方法可以实现吗?

谢谢。

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

最佳答案

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

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

程序运行时,变量名都没有了。编译器只需要它们来了解您想要做什么,以引用各种数据。

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

关于c - 是否可以使用字符串中的名称定义变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24135893/

相关文章:

代码出现段错误或从未完成其运行

Java,一种使用保留字的方法

c++ - 使用#define 的新变量

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

variables - Go Tour 基础知识 #13 : how come there's no overflow?

c - 拆分/解析并从 char 数组中获取值

缓冲区溢出调用函数

计算无符号整数中的位数

C - 检查字符串是否是另一个字符串的子字符串

java - 为什么HashMap内部工作辅助变量是int,可以是byte数据类型