2

私が知っているように、C列挙型は符号なし整数ですが、これは実装によって異なる場合があります。バイナリ表現の列挙型にはどのタイプを使用する必要がありますか?

*PS'バイナリ表現'はバイト配列を意味します。他のプログラムと相互運用するために、列挙値をソケットにシリアル化したい。

4

3 に答える 3

2

intを表すためにを使用するか、またはのすべての値を保持するのに十分でない場合は、コンパイラに依存します。enumlongintenum

すべてのenum値をで表すことができることがわかっている場合は、値のバイナリ表現としてint安全に使用できます。intenum

于 2010-08-18T06:38:42.377 に答える
1

列挙型は整数を設定するための単なる凝った方法であるため、すべての列挙型の値を格納するのに十分な大きさの整数型を選択する必要があります。通常、charで十分であり、シリアル化の問題はありません。しかし、私は代わりに短いか長い間行きます。シリアル化するときは、ntohs/htonsまたはntohl/htonl(マニュアルページを参照)を使用して、シリアル化がネットワークバイトオーダーであり、逆シリアル化がホストバイトオーダーであることを常に確認します。

于 2010-08-18T06:45:52.703 に答える
0

外部データ表現用のライブラリルーチンはどうxdrですか?

車輪の再発明によって、より良いものが生まれることはめったにありません。

于 2010-08-18T06:41:59.367 に答える