`typedef`中的`同义词'是强制性的?

xto*_*ofl 8 c++ syntax typedef

我在代码审查中遇到了这个问题:

typedef struct C { int i; };
Run Code Online (Sandbox Code Playgroud)

它汇编.

除了它是C风格,其中结构在一个单独的"命名空间",并且需要进行类型化以便以后使用,我发现很奇怪没有用这个typedef定义...

那么:typedef不需要类型参数和别名参数吗?

Joh*_*itb 5

快速浏览n3225并未显示要求存在名称的任何要求.最接近的文字说

在一个简单声明中,只有在声明一个类(第9节)或枚举(7.2)时,也就是说,当decl-specifier-seq包含一个类说明符时,可以省略可选的init-declarator-list,详细说明 - 带有类键(9.1)或枚举说明符的类型说明符.

所以你的代码似乎是有效的,但我认为它闻起来很糟糕.


peo*_*oro 2

是的,typedef需要另一个论点。那typedef不会有任何作用。

无论如何,这不是一个错误,只是不推荐使用typedef.


C 标准(6.7.7 中的 n1256)谈论typedef. 它并没有说这种用法已被弃用,但编译器报告它已被弃用,因为这样的语句没有效果。