例如,abc.c包含一个变量
#define NAME "supreeth"
Run Code Online (Sandbox Code Playgroud)
可以NAME在def.c中替换变量吗?
unw*_*ind 15
在你的代码NAME中不是变量.它是一个预处理器符号,这意味着文本NAME将在输入中的任何地方用字符串替换"supreeth".这种情况发生在每个文件中,所以谈论它是"外部"是没有意义的.
如果在没有它的情况下编译特定的C文件#define,则任何使用都NAME将保持原样.
MOH*_*MED 14
你不能使用extern宏.但如果你想要你的宏看到许多C文件
把你的宏定义
#define NAME "supreeth"
Run Code Online (Sandbox Code Playgroud)
在像def.h这样的头文件中
然后在你的C代码中包含你的def.h然后如果你包含def.h你可以在你的C文件中使用你的所有其他C文件中的宏
如果你#define NAME "supreeth"在 abc.c 中,你肯定可以在另一个文件中拥有同名的 extern 变量def.c,这是编译器所关心的。如果您暗示这两者之间存在某种依赖性,则这种依赖性/链接将不会发生。显然,做这样的事情是令人困惑的,也是一个坏主意。