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