4

C では、offsetof を使用して、構造内のメンバーの先頭へのオフセットを計算するのを見ましたか?

C++ での使用は引き続き推奨されますか? このマクロなしでこれを行う他の方法はありますか?

4

5 に答える 5

1

C++ にはメンバーへのポインターがあります。これらはオフセットに似ていますが、(1) タイプセーフであり、(2) より汎用的です。これらはメソッドや基本クラスなどでも機能します。

于 2014-03-28T16:09:15.757 に答える
0

本当に必要でない限り、私はそれをお勧めしません。あなたの使用が C で有効である限り、C++ でも有効なはずです。あなたが何をしているのかを知らなければ、あなたの質問に答えることは不可能です.

于 2014-03-28T15:13:50.893 に答える
0

の使用法の 1 つは、offsetof()このブログ投稿で説明されているように、固定ヘッダーと可変サイズの配列を持つ構造を持つ C のようなコードでした。

サイズ 1 の配列で終わる構造体があるのはなぜですか?

(このブログ投稿FIELD_OFFSETでは、に対応する Windows 主義であるマクロを使用していることに注意してくださいoffsetof()。)

現代の C++ では、可変サイズの配列のように、より高度な技術とコードを使用する必要があると思います。std::vector

于 2014-03-28T15:24:20.993 に答える