我想知道预定义的宏在哪里定义和驻留在哪里?
预定义的宏在编译器或预处理器中定义,后者具有在源代码中保存预定义的宏的字典。
我的意思是__FILE__
宏在编译器中具有定义和等效值,并且定义是在编译器中完成的吗?
[The C Preprocessor, For GCC Version 9.2.0,第3.7章(预定义的宏)说:
预定义了多个类似对象的宏;您可以在不提供定义的情况下使用它们。
和更高版本,例如
__ LINE __-此宏扩展为当前输入行号,形式为十进制整数常量。虽然我们将其称为预定义宏,但它是一个非常奇怪的宏,因为其“定义”随源代码的每一行而发生变化]
意味着在任何地方都没有这些宏的具体定义。在预处理期间,C预处理器会跟踪其当前正在处理的文件,并相应地替换__FILE__
,__LINE__
和其他“特殊”宏。