昨晚我被问到C中的一个问题我不知道答案,因为自从大学以来我没有使用过C,所以我想也许我可以在这里找到答案而不是忘记它.
如果一个人有如下定义:
#define count 1
那个人可以count
使用里面的1 找到变量名吗?
我不这么认为,因为我认为计数会指向1,但是不知道1如何能指回计数.
在@Cade Roux的答案的基础上,如果使用预处理器#define将值与符号关联,则在预处理器运行后,代码将不会对该符号进行任何引用:
#define COUNT (1) ... int myVar = COUNT; ...
预处理器运行后:
... int myVar = (1); ...
正如其他人所指出的那样,由于上述原因,这基本上意味着"不".
简单的答案是不,他们不能.这样的#Defines由预处理器处理,它们只指向一个方向.当然另一个问题是即使编译器也不会知道 - 因为"1"可能指向任何东西 - 多个变量可以同时具有相同的值.
那个人可以使用里面的1找到变量名"count"吗?
没有
因为我确信比我更有说服力和精通的人会指出#define'd事情没有编译到源代码中,你所拥有的是一个预处理器宏,它将通过源代码并更改所有'count'实例'它找到'1'.
但是,为了更好地了解您被问到的问题,因为C是一种编译语言,直到机器代码,您将永远不会使用Java或C#等语言进行反思和内省.编译后所有命名都会丢失,除非你有一个围绕源/编译器构建的框架来做一些漂亮的东西.
希望这有帮助.(原谅双关语)