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によるこの優れた記事 ライブラリとこれらのデータ型について詳しく説明しています。