如何理解 typedef 的这种用法?

Posted

技术标签:

【中文标题】如何理解 typedef 的这种用法?【英文标题】:How to understand this usage of typedef? 【发布时间】:2021-07-10 03:03:24 【问题描述】:

代码如下:

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”。

【问题讨论】:

【参考方案1】:

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

它用于解释当局部变量与 typedef 名称相同时会发生什么。

Typedef 名称与普通标识符共享名称空间(请参阅名称 更多信息的空间)。因此,一个程序可以有一个 typedef 名称和同名的本地范围标识符。

【讨论】:

比我的回答更有诗意。 :)【参考方案2】:

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

此示例显示一个名为 FlagTypechar 类型的 typedef 和一个名为 myproc()int 类型的变量 FlagType

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

当我第一次知道嵌套anonymous structures时,我有同样的“WTF‽”反应。

【讨论】:

该页面遵循了一个非常混乱的概念:他们首先告诉你如何迷惑自己,然后如何正确地做...... 是的,虽然这是 CS 教育中的常见技术,但恐怕。

以上是关于如何理解 typedef 的这种用法?的主要内容,如果未能解决你的问题,请参考以下文章

typedef见解即如何定义一个数组指针

Typedef 用法

typedef用法

Apollo GraphQL - 将 .graphql 模式导入为 typeDefs

C++ typedef用法详解

typedef struct 用法