HOME > Linux Tips ( 目次 ) > Linux コマンド 一覧表 > o > offsetof - ライブラリコールの説明

offsetof - ライブラリコールの説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. 返り値
  5. 準拠

名前

offsetof - 構造体のメンバーのオフセットを返す

書式

#include <stddef.h>
size_t offsetof(type , member);

説明

offsetof () マクロは、フィールド member の 構造体 type の先頭からのオフセットを返す。
このマクロが有用なのは、 構造体を構成するフィールドのサイズは実装によって変化するし、 コンパイラによりフィールド間に挿入するパディングのバイト数も 違う可能性があるからである。 その結果、あるエレメントのオフセットは必ずしもそれより前の エレメントのサイズの合計とはならない。
member がバイト境界に位置していない場合 (すなわち、ビットフィールドの場合) には、 コンパイラでエラーが発生する。

返り値

offsetof () は、指定されたエレメントの指定された型の中での オフセットを、バイト単位で返す。

Linux/x86 システムで、gcc (1) のデフォルトオプションで コンパイルされた場合、下記のプログラムは以下のような出力を返す。
$ ./a.out offsets: i=0; c=4; d=8 a=16 sizeof(struct s)=16

#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>


int main() { struct s { int i; char c; double d; char a[]; };
/* 出力はコンパイラ依存である */
printf("offsets: i=%ld; c=%ld; d=%ld a=%ld\n", (long) offsetof(struct s, i), (long) offsetof(struct s, c), (long) offsetof(struct s, d), (long) offsetof(struct s, a)); printf("sizeof(struct s)=%ld\n", (long) sizeof(struct s));
exit(EXIT_SUCCESS); }

準拠

POSIX.1-2001.

Linux Tips 関連記事
Linux Tips(目次)
Linux ディストリビューション一覧
rpm のファイル名にあるi386とかi686とは
自分のマシンの情報を調べる
cron の設定
ssh の root ログインを禁止する
ssh を、ユーザ、IPでアクセス制限
鍵交換方式によるssh接続
鍵交換方式によるssh接続( windowsから )
複数ファイル内の文字列を置換して上書き保存する
あるグループをイニシャルグループとするユーザー一覧出力
複数ファイルのファイル名を一括変換する
連番ファイルをコマンド一発で作成する
中身がランダムなファイルを任意のサイズで作成する
Linux ユーザーアカウントをロック・アンロックする