有没有办法知道变量是否已在C中声明?

时间:2010-04-08 12:50:30

标签: c declaration

我正在实现一些代码生成器,我想知道C中是否有任何方法,如果已经声明了变量?

我试图使用预处理器找到一些东西,但没有任何成功......

感谢。

5 个答案:

答案 0 :(得分:5)

C是严格静态的,如果已经声明了变量,则无法“查找”。如果您正在创建代码生成器,为什么不读取代码行并查看已声明的内容?

答案 1 :(得分:1)

不,没有。这样做是编译器所做的大部分工作。

创建唯一变量名称的常用方法是使用非常不可能的变量名称,如果可能的话与行号结合使用。像

这样的东西
// beware, brain-compile code ahead!
a_rather_unlikely_variable_name_by_sbi_ ## __LINE__

答案 2 :(得分:0)

不是,不。除非您计算使用它并查看代码是否编译,否则不会。

您可以尝试使用预处理器破解特定变量的某些内容,类似于每个包含文件顶部的标准#ifdef。但是,这不会是范围感知的,因为预处理器在编译器之前运行。

C不是那种非常动态的语言。

答案 3 :(得分:0)

变量本身是由您的生成器生成的还是用户输入的内容?当你自己生成变量时,你可以发送一个预处理器标记和变量,然后检查该标记是否存在。

答案 4 :(得分:0)

我已经很晚了 有一个简单的方法来了解这一点,文本文件; 在声明它时,在文件中写入变量名称,然后稍后检查是否写入了名称。 只需制作3个宏“DEF”“IF_DEF”和“IF_NOT_DEF”,它看起来不错。 您无法在C中查找,但您可以在文件中查找。 但确实需要一些记忆。