gpt4 book ai didi

c - 带和不带结构名称的 Typedef

转载 作者:行者123 更新时间:2023-12-05 01:44:55 25 4
gpt4 key购买 nike

<分区>

我在 XCB API header 中看到了以下奇怪之处。大多数类型都以这种方式使用类型别名和结构名称定义:

typedef struct xcb_window_iterator_t {
xcb_window_t *data;
int rem;
int index;
} xcb_window_iterator_t;

但是一些 typedef 省略了结构名称。

typedef struct {
unsigned int sequence;
} xcb_void_cookie_t;

从 C 的角度来看,这意味着什么?

后者是有名字的类型,还是没有名字的结构?还是它没有类型而只是一个有名称的结构?

我的困惑来自 gccxml 的输出。

对于 xcb_window_iterator_t 它生成一个 Struct 节点:

$ xmllint --format --xpath '//Struct[@name="xcb_window_iterator_t"]' xcb.xml 
<Struct id="_199" name="xcb_window_iterator_t" context="_1" mangled="21xcb_window_iterator_t" demangled="xcb_window_iterator_t" location="f0:43" file="f0" line="43" artificial="1" size="128" align="64" members="_2240 _2241 _2242 _2243 _2244 _2245 _2246 " bases=""/>

和一个Typedef节点:

$ xmllint --format --xpath '//Typedef[@name="xcb_window_iterator_t"]' xcb.xml 
<Typedef id="_200" name="xcb_window_iterator_t" type="_199" context="_1" location="f0:47" file="f0" line="47"/>

但对于 xcb_void_cookie_t 它只生成一个 Struct 节点:

$ xmllint --format --xpath '//Struct[@name="xcb_void_cookie_t"]' xcb.xml 
<Struct id="_967" name="xcb_void_cookie_t" context="_1" mangled="17xcb_void_cookie_t" demangled="xcb_void_cookie_t" location="f14:189" file="f14" line="189" size="32" align="32" members="_3655 _3656 _3657 _3658 _3659 " bases=""/>

但是没有Typedef节点:

$ xmllint --format --xpath '//Typedef[@name="xcb_void_cookie_t"]' xcb.xml 
XPath set is empty

这是否意味着 xcb_void_cookie_t 不是类型而只是一个结构,尽管代码包含 typedef?还是 gccxml 中的错误?

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