typedef的范围

时间:2012-04-25 08:37:10

标签: c

我不在电脑上,所以目前无法对此进行测试,但需要查看一些代码。我仍然有点处于C ++思维框架中。

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

4 个答案:

答案 0 :(得分:22)

Typedef是声明。如果你在C文件中有一个typedef,那么其他任何C文件都不会知道它,因为它们是相互独立编译的。

对于标题中的typedef,当然可以从包含它的所有C文件中看到它。

答案 1 :(得分:5)

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

答案 2 :(得分:1)

我不知道这个复杂句子的含义是什么,但这是C标准定义typedef范围的方式:

  

作为特殊情况,考虑类型名称(不是标识符的声明)   有一个范围,它在类型名称中省略的位置之后开始   如果没有省略,则会出现标识符。

P.S。有人请解释一下。

答案 3 :(得分:0)

下面是显示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;