首页 > 解决方案 > 宏名称与标识符名称相同但在其他文件中

问题描述

文件 1.c #define MAX_N 99

文件 2.c int MAX_N=99;

如果我尝试链接这两个文件会发生什么?

标签: c

解决方案


如果我尝试链接这两个文件会发生什么?

您不能链接源文件。您必须将它们编译为目标文件并链接它们。在这种情况下,宏在编译时被扩展是相关的,因此宏标识符没有链接时表示,因此它们不与出现在其他翻译单元中的标识符交互。

相反,如果您按照给定的顺序将两个源文件合并为一个,而不#undefMAX_N这两个语句之间添加宏,那么生成的程序将是无效的,并且我知道的每个编译器都会拒绝它。


推荐阅读