我不在电脑前,所以目前无法测试,但有一些代码要查看。不幸的是,我仍然在某种程度上处于 C++ 思维框架中。
那么,当在 C 源文件中声明 typedef 时,它的作用域是什么?我知道要使函数和变量仅在同一个翻译单元中可用,您需要将它们设为静态,我想知道这对于 typedefs 是否相同?
我不在电脑前,所以目前无法测试,但有一些代码要查看。不幸的是,我仍然在某种程度上处于 C++ 思维框架中。
那么,当在 C 源文件中声明 typedef 时,它的作用域是什么?我知道要使函数和变量仅在同一个翻译单元中可用,您需要将它们设为静态,我想知道这对于 typedefs 是否相同?
Typedef 是声明。如果您在 C 文件中有 typedef,则其他 C 文件将不会意识到这一点,因为它们是相互独立编译的。
对于标头中的 typedef,它当然会在包含它的所有 C 文件中可见。
typedef
与 C/C++ 中的常规变量具有相同的范围
这是一个显示 typedef 和范围的示例:
typedef int foo_t;
foo_t x = 1;
double bar(double x) {
typedef double foo_t;
foo_t y = 2.0;
return y + 3.14156;
}
foo_t z = 1;
我不知道这个复杂句子的含义是什么,但这就是 C 标准如何定义 typedefs 的范围:
作为一种特殊情况,类型名称(不是标识符的声明)被认为具有一个范围,该范围紧邻类型名称中出现省略的标识符的位置(如果没有省略)。
PS有人请解释一下。