c – 自我的typedef有效吗?

前端之家收集整理的这篇文章主要介绍了c – 自我的typedef有效吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我遇到了一些具有以下内容的C代码
typedef Request Request;

这只是一个无操作或者这种typedef实际有效果,如果有,它有什么影响?

解决方法

您可以在7.1.3节中阅读与C 2003 ANSI ISO IEC 14882 2003的typedef说明符相关的所有规则.在7.1.3中,2)已经说过,如果名称已经引用了某种类型,则允许使用identity typedef.

这是合法的:

typedef int Request;
typedef Request Request; // Redefines "Request" with no effect

而事实并非如此:

typedef Request Request; // Illegal,first "Request" doesn't name a type.

该标准有一个与此相关的具体例子. C 2003,§7.1.3/ 2:

In a given non-class scope,a typedef specifier can be used to redefine the name of any type declared in
that scope to refer to the type to which it already refers. [Example:

typedef struct s { /* ... */ } s;
typedef int I;
typedef int I;
typedef I I;

end example]

在7.1.3中,3)已经说过禁止使用typedef将类型重新定义为别名到别名

猜你在找的C&C++相关文章