c - 预定义的宏在 C 中的什么位置?
问题描述
我想知道预定义的宏在哪里定义和驻留?
预定义的宏是在编译器或预处理器中定义的,它有一个字典来保存源代码中的预定义宏。
我的意思是__FILE__
宏在编译器中具有定义和等效值,并且已经在编译器中进行了定义,这是真的吗?
解决方案
C 预处理器,对于 GCC 版本 9.2.0,第 3.7 章(预定义宏)说:
预定义了几个类似对象的宏;您在不提供定义的情况下使用它们。
后来,例如
__LINE__ -- 该宏以十进制整数常量的形式展开为当前输入的行号。虽然我们称它为预定义宏,但它是一个非常奇怪的宏,因为它的“定义”会随着源代码的每一行而改变
这意味着在任何地方都没有这些宏的具体定义。在预处理期间,C 预处理器会跟踪它当前正在处理和替换的文件__FILE__
,__LINE__
以及相应的其他“特殊”宏。
推荐阅读
- google-apps-script - 带有邀请和编辑活动的 Google 工作表到日历
- graphics - 如何使用 CSGTree 进行多个布尔运算
- javascript - CORDOVA / phonegap NFC - 读写标签
- rest - REST API 和 Delphi 错误:未提供所需的 OAuth 凭据
- c# - 找不到类型或命名空间名称“Dbset<>”(您是否缺少 using 指令或程序集引用?)
- python - Tkinter 查询 SQLite 数据库
- oracle-apex - 仅输出最后一个值
- python - Ansibe 是否支持 Python 3?如果您需要 Python 3 支持,请改用 `dnf` Ansible 模块
- docker - 在本地运行 Kubernetes 并连接到远程 Docker 服务器
- android - 你可以在 Android Studio 中构建一个反编译的 apk 吗?