C言語でoffsetofマクロを使う方法を教えてください。

offsetofはC言語の構造体メンバのオフセット量(構造体先頭からのメンバへのオフセット)を取得するマクロ

使われ方は以下の通りです。

#include <stddef.h>

struct Example {
    int a;
    char b;
    double c;
};

int main() {
    size_t offset = offsetof(struct Example, b);
    printf("Offset of 'b' in struct Example: %zu\n", offset);
    return 0;
}

Example構造体を作成し、その中に「a」「b」「c」の3つのメンバーを定義しています。その後、「b」がExample構造体の中でどの「オフセット」にあるのかをoffsetofマクロを使用して取得して表示しています。

offsetofマクロを使うには、ヘッダファイルstddef.hのインクルードが必要であることに注意してください。また、offsetofはsize_t型を返却するため、プリント時には%zuフォーマット指定子を使う必要があることに注意してください。

offsetofマクロを使うと、構造体定義時にそのメンバのオフセットを取得できるため、ポインタ演算やメンバへのアクセスが容易になります。

bannerAds