在c++代码中,以下关键字是什么意思?SIGSELECT,U32,U16,U8

In c++ code, what do the following keywords mean? SIGSELECT, U32, U16, U8

本文关键字:SIGSELECT 意思 U32 U8 U16 是什么 关键字 代码 c++      更新时间:2023-10-16

我有一个关于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的别名。例如,请参阅本页。

某些标头执行

#define SIGSELECT int

typedef int SIGSELECT;

以便引入这个新名称(类似于提到的其他类型)。

要弄清楚这些是预处理器符号还是实际的typedef:ed类型别名,请通过预处理器运行代码并读取其输出。如果措辞发生变化(即SIGSELECT变为int或其他类型),则它们是预处理器符号,否则它们是typedef:s。

正如@AJG85在这个线程的评论中提到的那样,您可以通过包括标准库CSTDINT 来移植数据类型

#include <cstdint>

Alex Allain的这篇优秀文章更详细地描述了库和这些数据类型。