例如 abc.c 包含变量
#define NAME "supreeth"
可以在 def.c ?
中外部变量NAME
答案 0 :(得分:15)
在您的代码NAME
中不是变量。它是一个预处理器符号,这意味着文本NAME
将在输入中的任何位置替换为字符串"supreeth"
。这种情况发生在每个文件中,因此将它称为“外部”是没有意义的。
如果编译的特定C文件没有#define
,则NAME
的任何使用都将保持原样。
答案 1 :(得分:13)
您不能将extern
与宏一起使用。但如果你想要你的宏看到许多C文件
把你的宏定义
#define NAME "supreeth"
在 def.h
等标题文件中然后在您的C代码中包含 def.h ,然后如果包含 def.h <,则可以在所有其他C文件的C文件中使用您的宏/ p>
答案 2 :(得分:2)
如果你在abc.c中有#define NAME "supreeth"
,你肯定可以在另一个文件def.c
中使用相同名称的外部变量,这就编译器而言。如果您暗示这两者之间存在某种依赖关系,则不会发生依赖关系/链接。
做这样的事情显然是令人困惑和坏主意。