我可以将 extern 用于宏吗?

标签 c macros extern

我知道函数在 C 中默认被标记为 extern 并且也可以在 C 中使用 extern 变量(如果它在其他文件中初始化或如果我写 extern int foo = 1;)。但是我可以将 extern 用于 C 宏,因为它们的行为类似于函数吗?

最佳答案

除非在 C99 中发生根本性的改变,否则预处理器宏没有存储类。您不能在不同时定义它们的情况下声明它们。编译器甚至不会像对待其他标识符那样对待它们——它们是纯文本翻译(至少在概念上)甚至在编译器尝试任何类型的名称查找之前发生。

关于我可以将 extern 用于宏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12792774/

相关文章:

c - 通过tcsetattr(fd.....)设置终端属性时,fd可以是stdout还是stdin?

python - 为什么基于 C 的 Python 扩展总是返回相同的值?

c - 是否可以将预处理器条件放入 C 宏中?

c++ - 使用 MACRO 在 for 循环中动态创建字符串(例如数组索引)

c - C : make function visible and callable through macro only (MSVC compiler) 中的函数可见性

c++ - 使用带有 MEX Wrapper 的辅助 C 文件从 MATLAB 2016 调用 C++ 代码时遇到问题

c - 如何比较结构和指针

c - 编译器-调试器的奇怪行为

c - 多个定义,即使我正在使用 extern 并包含守卫

c - c文件中外部变量的使用