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