15

例如abc.c包含一个变量

#define NAME "supreeth"

可以 extern def.cNAME中的变量吗?

4

3 回答 3

21

您不能extern与宏一起使用。但是如果你想让你的宏被许多 C 文件看到

把你的宏定义

#define NAME "supreeth"

在像def.h这样的头文件中

然后在您的 C 代码中包含您的def.h ,然后如果您包含def.h,您可以在所有其他 C 文件中使用您的 C 文件中的宏

于 2013-04-29T13:35:09.670 回答
16

在您的代码NAME中不是变量。它是一个预处理器符号,这意味着文本NAME将在输入中的任何地方替换为 string "supreeth"。每个文件都会发生这种情况,因此谈论它是“外部的”是没有意义的。

如果在没有 that 的情况下编译特定的 C 文件#define,则 的任何使用都NAME将保持原样。

于 2013-04-29T13:40:36.947 回答
3

如果你#define NAME "supreeth"在 abc.c 中,你肯定可以在另一个文件中有一个同名的 extern 变量def.c,这是就编译器而言。如果您暗示这两者之间存在某种依赖关系,则不会发生这种依赖关系/链接。显然,做这样的事情是令人困惑的,也是一个坏主意。

于 2013-04-29T13:53:32.857 回答