JM プロジェクトは、主に Linux 関連のマニュアルページの日本語ページを翻訳・公開しています。
... い。 member がバイト境界に位置していない場合 (すなわち、ビットフィールドの場合) には、 コンパイラでエラーが発生する。 返り値 offsetof () は、指定された member の指定された type の中でのオフセットを、バイト単位で返す。 準拠 POSIX.1-2001, POSIX.1-2008, C89, ... s { int i; char c; double d; char a[]; }; /* 出力はコンパイラ依存である */ printf("offsets: i=%zu; c=%zu; d=%zu a=%zu\n", offsetof(struct s, i), offsetof(struct s, c), offsetof(struct s, d), offsetof(struct s, a)); printf("sizeof(struct s)=%zu\n", sizeo ... ... テム上のパス名に結び付けることができる。 (上述のいずれかのシステムコールにより) ソケットのアドレスが返される際、 その長さは offsetof(struct sockaddr_un, sun_path) + strlen(sun_path) + 1 であり、 sun_path にはヌル終端されたパス名が格納される。 (Linux では、 ... 上記の offsetof () 式は sizeof(sa_family_t) の値と同じだが、 他の実装では sun_path の前に他のフィールドが含まれる場合もある。 そのため、 o ... の大きさを超えないようにすべきである。 * sockaddr_un 構造体の終わりを示す addrlen 引数は最低でも以下の値を持つべきである。 offsetof(struct sockaddr_un, sun_path)+strlen(addr.sun_path)+1 もしくは、もっと簡単には、 addrlen に sizeof(struct sockaddr_un) を指 ... ... d_reclen; /* この linux_dirent の長さ */ char d_name[]; /* (ヌル終端された) ファイル名 */ /* 実際の長さは (d_reclen - 2 - offsetof(struct linux_dirent, d_name)) */ /* char pad; // 値 0 のパディングバイト char d_type; // ファイル種別 (Linux 2.6.4 以降のみ ... ... d_reclen; /* この linux_dirent の長さ */ char d_name[]; /* (ヌル終端された) ファイル名 */ /* 実際の長さは (d_reclen - 2 - offsetof(struct linux_dirent, d_name)) */ /* char pad; // 値 0 のパディングバイト char d_type; // ファイル種別 (Linux 2.6.4 以降のみ ... ... 上記の glibc dirent 構造体のサイズよりも大きな値となる。 関連項目 getdents (2), read (2), closedir (3), dirfd (3), ftw (3), offsetof (3), opendir (3), readdir_r (3), rewinddir (3), scandir (3), seekdir (3), telldir (3) この文書について この man ページは L ... 日本語の文書やマニュアルを配布している個人/プロジェクトへのリンクです。