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