c - 宏名称与标识符名称相同但在其他文件中
问题描述
在文件 1.c
#define MAX_N 99
在文件 2.c
int MAX_N=99;
如果我尝试链接这两个文件会发生什么?
解决方案
如果我尝试链接这两个文件会发生什么?
您不能链接源文件。您必须将它们编译为目标文件并链接它们。在这种情况下,宏在编译时被扩展是相关的,因此宏标识符没有链接时表示,因此它们不与出现在其他翻译单元中的标识符交互。
相反,如果您按照给定的顺序将两个源文件合并为一个,而不#undef
在MAX_N
这两个语句之间添加宏,那么生成的程序将是无效的,并且我知道的每个编译器都会拒绝它。
推荐阅读
- video-encoding - 视频尺寸、比特率、亮度和屏幕尺寸之间的关系
- r - 将年份数据框转换为R中的类别计数数据框
- sqlite - 在运行时对 SQLite 内存中数据库进行故障排除
- typescript - 如何在打字稿中扩展字符串?
- php - Illuminate\Database\Eloquent\Collection::orderBy 不存在
- android - Activity not able to start: ID does not reference a View inside this Activity
- expo - React-Native: How to include location details while capturing the image using expo-camera
- visual-studio-code - 问题:VSCode DefinitionProvider 每次在新选项卡中打开同一个文档
- swift - 这个完成处理程序究竟是如何工作的?
- azure-devops - 用于在 Azure Devops 中设置多选字段类型的 REST API