首页 > 解决方案 > 预定义的宏在 C 中的什么位置?

问题描述

我想知道预定义的宏在哪里定义和驻留?

预定义的宏是在编译器或预处理器中定义的,它有一个字典来保存源代码中的预定义宏。

我的意思是__FILE__宏在编译器中具有定义和等效值,并且已经在编译器中进行了定义,这是真的吗?

标签: ccompiler-constructionpreprocessorlanguage-conceptspredefined-macro

解决方案


C 预处理器,对于 GCC 版本 9.2.0,第 3.7 章(预定义宏)说:

预定义了几个类似对象的宏;您在不提供定义的情况下使用它们。

后来,例如

__LINE__ -- 该宏以十进制整数常量的形式展开为当前输入的行号。虽然我们称它为预定义宏,但它是一个非常奇怪的宏,因为它的“定义”会随着源代码的每一行而改变


这意味着在任何地方都没有这些宏的具体定义。在预处理期间,C 预处理器会跟踪它当前正在处理和替换的文件__FILE____LINE__以及相应的其他“特殊”宏。


推荐阅读