如何理解 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】:如果您阅读了上面的几行,它们描述的是命名空间是如何分离的。
此示例显示一个名为 FlagType
的 char
类型的 typedef
和一个名为 myproc()
的 int
类型的变量 FlagType
。
这很愚蠢,没有人应该这样做,但从语言解析的角度来看这是合法的。
当我第一次知道嵌套anonymous structures时,我有同样的“WTF‽”反应。
【讨论】:
该页面遵循了一个非常混乱的概念:他们首先告诉你如何迷惑自己,然后如何正确地做...... 是的,虽然这是 CS 教育中的常见技术,但恐怕。以上是关于如何理解 typedef 的这种用法?的主要内容,如果未能解决你的问题,请参考以下文章