我有一个关于c ++结构中关键字用法的问题.
我见过这样定义的结构:
typedef struct {
SIGSELECT signo;
U32 id;
U32 re;
U16 id1;
U8 id2;
}First;
Run Code Online (Sandbox Code Playgroud)
请帮助我理解这些关键字:SIGSELECT,U32,U16,U8
unw*_*ind 14
他们"意味着什么"是一个非常深刻的问题,也取决于你所处的环境.
这些是类型名称,但不是标准的C++类型,所以它们并不是普遍知道的.
猜测是Uxx类型是指定位宽的"无符号整数".因此,U32这将是一个32位无符号整数,即uint32_tC99中已知的但尚未在C++中标准化.
SIGSELECT有点困难,但成员名为" signo",这意味着这是一个信号编号.如果代码是针对类似POSIX的环境,那么它很可能SIGSELECT只是默认整数类型的别名,int.例如,请参阅此页面.
一些标题也可以
#define SIGSELECT int
Run Code Online (Sandbox Code Playgroud)
要么
typedef int SIGSELECT;
Run Code Online (Sandbox Code Playgroud)
为了引入这个新名称(并且类似于提到的其他类型).
要确定这些是预处理程序符号还是实际typedef:ed类型别名,请通过预处理程序运行代码并读取其输出.如果措辞改变(即SIGSELECT变成int或其他类型),它们是预处理器符号,否则它们是typedef:s.