我在现有代码库中有以下(工作)代码,在 C 和 C++ 之间共享的包含文件中使用,在 MSVC (2010) 和 Windows DDK 上编译:
struct X {
USHORT x;
} typedef X, *PX;
And:
enum MY_ENUM {
enum_item_1,
enum_item_2
} typedef MY_ENUM;
据我所知,正确的定义应该是这样的:
typedef struct {
USHORT x;
} X, *PX;
填写下面的表格有什么目的吗?我错过了什么吗?
事实是两者typedef <type> <alias>
and <type> typedef <alias>
有效的只是来自语言语法定义。
typedef
被分类为存储类说明符(就像static
, auto
),并且类型本身被称为类型说明符。从标准第 6.7 节中的语法定义中,您将看到它们可以自由互换:
declaration:
declaration-specifiers init-declarator-list ;
declaration-specifiers:
storage-class-specifier declaration-specifiers
type-specifier declaration-specifiers
type-qualifier declaration-specifiers
function-specifier declaration-specifiers
init-declarator-list:
init-declarator
init-declarator-list , init-declarator
init-declarator:
declarator
declarator = initializer
(当然,请注意,这对于结构和非结构同样适用,这意味着double typedef trouble;
也有效。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)