【问题标题】:How to understand this usage of typedef?如何理解 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”。

【问题讨论】:

    标签: c msdn


    【解决方案1】:

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

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

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

    【讨论】:

    • 比我的回答更有诗意。 :)
    【解决方案2】:

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

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

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

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

    【讨论】:

    • 该页面遵循了一个非常混乱的概念:他们首先告诉你如何迷惑自己,然后如何正确地做......
    • 是的,虽然这是 CS 教育中的常见技术,但恐怕。
    猜你喜欢
    • 2013-09-15
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-15
    • 2012-11-08
    • 1970-01-01
    相关资源
    最近更新 更多