9

我不在电脑前,所以目前无法测试,但有一些代码要查看。不幸的是,我仍然在某种程度上处于 C++ 思维框架中。

那么,当在 C 源文件中声明 typedef 时,它的作用域是什么?我知道要使函数和变量仅在同一个翻译单元中可用,您需要将它们设为静态,我想知道这对于 typedefs 是否相同?

4

4 回答 4

23

Typedef 是声明。如果您在 C 文件中有 typedef,则其他 C 文件将不会意识到这一点,因为它们是相互独立编译的。

对于标头中的 typedef,它当然会在包含它的所有 C 文件中可见。

于 2012-04-25T08:40:36.417 回答
6

typedef与 C/C++ 中的常规变量具有相同的范围

于 2012-04-25T08:40:06.883 回答
2

这是一个显示 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;
于 2018-11-19T23:47:40.193 回答
1

我不知道这个复杂句子的含义是什么,但这就是 C 标准如何定义 typedefs 的范围:

作为一种特殊情况,类型名称(不是标识符的声明)被认为具有一个范围,该范围紧邻类型名称中出现省略的标识符的位置(如果没有省略)。

PS有人请解释一下。

于 2012-10-23T16:18:25.387 回答