我有一个关于c结构中关键字使用的问题.
我看到一个像这样定义的结构:
typedef struct { SIGSELECT signo; U32 id; U32 re; U16 id1; U8 id2; }First;
请帮我理解这些关键字:SIGSELECT,U32,U16,U8
解决方法
他们的意思是一个相当深刻的问题,也取决于你所处的环境.
这些是类型名称,但不是标准C类型,因此它们不是普遍知道的.
猜测是Uxx类型是指定位宽度的“无符号整数”.所以U32将是一个32位无符号整数,在C99中称为uint32_t,但在C中尚未标准化.
SIGSELECT有点困难,但是成员被命名为“signo”,这意味着这是一个信号.如果代码是用于类似POSIX的环境,则很可能SIGSELECT只是默认整数类型int的别名.例如见this page.
某些标题也可以
#define SIGSELECT int
要么
typedef int SIGSELECT;
为了介绍这个新的名字(和类似的其他类型提到).
要弄清楚这些是预处理器符号还是实际的typedef:ed类型别名,通过预处理器运行代码并读取其输出.如果措辞改变(即SIGSELECT变成int或其他类型),则它们是预处理符号,否则它们是typedef:s.