C 是否可以使用字符串中的名称定义变量
我正在寻找一种从用户处获取char*的方法,并使用此字符串引用程序中的变量。 这类似于预处理或粘贴选项C 是否可以使用字符串中的名称定义变量,c,variables,C,Variables,我正在寻找一种从用户处获取char*的方法,并使用此字符串引用程序中的变量。 这类似于预处理或粘贴选项##。 例如,假设我有一个函数: f(int-num) 和变量 intx=1,z=2 我希望能够做到以下几点: int y=f(##arg[1])\\假设argv[1]=“x” 或者,如果输入为“z”,则将z发送到f() 有什么办法可以做到这一点吗 谢谢 编辑: 解决方案不必是完全动态的,我可以接受一些假设,比如严格限制可用变量,即只有一组允许的变量名 在C中,您不能直接这样做 C是一种编译语言
##
。
例如,假设我有一个函数:
f(int-num)代码>
和变量
intx=1,z=2代码>
我希望能够做到以下几点:
int y=f(##arg[1])\\假设argv[1]=“x”
或者,如果输入为“z”,则将z发送到f()
有什么办法可以做到这一点吗
谢谢
编辑:
解决方案不必是完全动态的,我可以接受一些假设,比如严格限制可用变量,即只有一组允许的变量名 在C中,您不能直接这样做
C是一种编译语言,没有内置的内省支持
当程序运行时,变量名将消失。编译器只需要它们就可以知道您想要做什么,引用各种数据
因此,要获得这种行为,您必须手动设置某种形式的查找表,在其中保留名称(作为字符串),然后自己实现搜索。在C中,您不能直接这样做
C是一种编译语言,没有内置的内省支持
当程序运行时,变量名将消失。编译器只需要它们就可以知道您想要做什么,引用各种数据
因此,要获得这种行为,您必须手动设置某种形式的查找表,在其中保留名称(作为字符串),然后自己实现搜索。不,这在C中是不可能的。这是因为它不是反射式语言(与Java不同)。所有变量符号在编译过程中丢失
一种可能是使用哈希映射建立一个符号表供运行时使用(将变量的名称和指针分别作为键和值),但考虑到您的用例,我建议不要这样做。不,这在C中是不可能的。这是因为它不是一种反射语言(与Java不同)。所有变量符号在编译过程中丢失
一种可能是使用哈希映射建立一个符号表供运行时使用(将变量的名称和指针分别作为键和值),但考虑到您的用例,我建议您不要这样做。不要认为有办法做到这一点。但是,如果可能的话,调试将是一件非常痛苦的事情。bug不是一个问题……很简单:在C中不可能,但是请看asm可能提供这样的功能。看起来很有趣。我不认为有办法做到这一点。但是,如果可能的话,调试将是一件非常痛苦的事情。bug不是一个问题……很简单:在C中不可能,但是请看asm可能提供这样的功能。看起来很有趣