C では、offsetof を使用して、構造内のメンバーの先頭へのオフセットを計算するのを見ましたか?
C++ での使用は引き続き推奨されますか? このマクロなしでこれを行う他の方法はありますか?
C++ にはメンバーへのポインターがあります。これらはオフセットに似ていますが、(1) タイプセーフであり、(2) より汎用的です。これらはメソッドや基本クラスなどでも機能します。
本当に必要でない限り、私はそれをお勧めしません。あなたの使用が C で有効である限り、C++ でも有効なはずです。あなたが何をしているのかを知らなければ、あなたの質問に答えることは不可能です.
の使用法の 1 つは、offsetof()
このブログ投稿で説明されているように、固定ヘッダーと可変サイズの配列を持つ構造を持つ C のようなコードでした。
(このブログ投稿FIELD_OFFSET
では、に対応する Windows 主義であるマクロを使用していることに注意してくださいoffsetof()
。)
現代の C++ では、可変サイズの配列のように、より高度な技術とコードを使用する必要があると思います。std::vector