Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 是否可以使用字符串中的名称定义变量_C_Variables - Fatal编程技术网

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

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是一种编译语言

我正在寻找一种从用户处获取char*的方法,并使用此字符串引用程序中的变量。 这类似于预处理或粘贴选项
##
。 例如,假设我有一个函数:
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可能提供这样的功能。看起来很有趣