gpt4 book ai didi

c++ - `struct X typedef` 与 `typedef struct X` 的含义是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:47:45 24 4
gpt4 key购买 nike

我在现有代码库中有以下(工作)代码,用于 C 和 C++ 之间共享的包含文件,在 MSVC (2010) 和 Windows DDK 上编译:

struct X {
USHORT x;
} typedef X, *PX;

和:

enum MY_ENUM {
enum_item_1,
enum_item_2
} typedef MY_ENUM;

据我所知,正确的定义应该是这样的:

typedef struct {
USHORT x;
} X, *PX;

下面的表格有什么用吗?我错过了什么吗?

最佳答案

事实 typedef <type> <alias><type> typedef <alias>有效仅来自语言语法定义。

typedef被归类为存储类说明符(就像staticauto),并且类型本身被称为类型说明符。从标准第 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; 也是有效的。)

关于c++ - `struct X typedef` 与 `typedef struct X` 的含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24883809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com