我不在电脑上,所以目前无法对此进行测试,但需要查看一些代码。我仍然有点处于C ++思维框架中。
那么,当在C源文件中声明typedef时,它的作用域是什么?我知道要使函数和变量只在同一个翻译单元中可用,你需要将它们设置为静态,我想知道这对于typedef是否相同?
答案 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;