C 如何理解typedef的这种用法?

C 如何理解typedef的这种用法?,c,msdn,C,Msdn,代码如下: typedef char FlagType; int main() { } int myproc( int ) { int FlagType; } 抄袭 据我理解,“typedef char FlagType”与“char a”没有区别。但是我不能理解“int-FlagType”。如果您阅读上面的几行,它们描述了名称空间是如何分离的 此示例显示了名为FlagType的char类型的typedef,以及myproc()中名为FlagType类型的int变量 这是愚蠢的,没

代码如下:

typedef char FlagType;

int main()
{
}

int myproc( int )
{
    int FlagType;
}
抄袭


据我理解,“typedef char FlagType”与“char a”没有区别。但是我不能理解“int-FlagType”。

如果您阅读上面的几行,它们描述了名称空间是如何分离的

此示例显示了名为
FlagType
char
类型的
typedef
,以及
myproc()
中名为
FlagType
类型的
int
变量

这是愚蠢的,没有人应该这么做,但从语言解析的角度来看,这是合法的


当我第一次学习nested时,我也有同样的“WTF”反应。

如果你读上面几行,它们描述了名称空间是如何分离的

此示例显示了名为
FlagType
char
类型的
typedef
,以及
myproc()
中名为
FlagType
类型的
int
变量

这是愚蠢的,没有人应该这么做,但从语言解析的角度来看,这是合法的


当我第一次了解nested时,我也有同样的“WTF”反应。

代码演示了一个病理学示例。不是标准或推荐的用例

它解释了当局部变量的名称与typedef名称相同时会发生什么情况

Typedef名称与普通标识符共享名称空间(参见名称 空间以获取更多信息)。因此,程序可以具有typedef 名称和具有相同名称的本地作用域标识符


代码演示了一个病理学示例。不是标准或推荐的用例

它解释了当局部变量的名称与typedef名称相同时会发生什么情况

Typedef名称与普通标识符共享名称空间(参见名称 空间以获取更多信息)。因此,程序可以具有typedef 名称和具有相同名称的本地作用域标识符


比我的回答更有诗意比我的回答更有诗意那一页遵循的是一个相当混乱的概念:他们首先告诉你如何迷惑自己,然后告诉你如何正确地做……是的,虽然这是CS教育中的一种常见技巧,但我担心。那一页遵循的是一个相当混乱的概念:他们首先告诉你如何迷惑自己,然后告诉你如何正确地做……是的,虽然这是CS教育中的一种常见技巧,但我担心。