如何理解typedef的这种用法?

How to understand this usage of typedef?

代码如下:

typedef char FlagType;

int main()
{
}

int myproc( int )
{
    int FlagType;
}

复制自https://docs.microsoft.com/en-us/cpp/c-language/typedef-declarations?view=msvc-160

在我看来,'typedef char FlagType' 使 'char a' 和 'FlagType a' 没有区别。但是我无法理解 'int FlagType'.

如果您阅读上面的几行内容,它们会描述名称空间是如何分隔的。

此示例显示 char 类型 typedef 中名为 FlagType 的变量和 myproc() 中类型 int 中名为 FlagType 的变量。

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

当我第一次了解到嵌套 anonymous structures 时,我也有同样的“WTF‽”反应。

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

显示它是为了解释当局部变量与 typedef 名称同名时会发生什么。

Typedef names share the name space with ordinary identifiers (see Name Spaces for more information). Therefore, a program can have a typedef name and a local-scope identifier by the same name.