ssize_t |
辞書:電算用語の基礎知識 プログラミング仕様編 (PTPROGS) |
読み:エスサイズ・アンダースコア・ティー |
外語:ssize_t |
品詞:名詞 |
C/C++などにおける変数型の一つ。UNIXで、「エラー」または「長さ」を格納するために使われる。
|
書式 |
#include <unistd.h>
#include <sys/types.h>
定義 |
FreeBSD |
FreeBSDの場合、次のように定義されている。
unistd.hやsys/types.h
typedef __ssize_t ssize_t;
machine/_types.h
typedef int __int32_t;
typedef __int32_t __ssize_t;
32ビット版FreeBSDでは、間接的にintで定義されている。
Linuxユーザー空間 |
x86用Linuxの場合、次のように定義されている。
asm/posix_types_64.h
typedef long __kernel_ssize_t;
asm/posix_types_32.h
typedef int __kernel_ssize_t;
asm-generic/posix_types.h
typedef int __kernel_ssize_t;
typedef long __kernel_ssize_t;
その後
sys/types.h
typedef __ssize_t ssize_t;
環境に応じて、intまたはlongが間接的にtypedefされている。
Linuxカーネル |
x86の場合
arch/x86/include/asm/posix_types_64.h
typedef long __kernel_ssize_t;
arch/x86/include/asm/posix_types_32.h
typedef int __kernel_ssize_t;
ARMの場合
arch/arm/include/asm/posix_types.h
typedef int __kernel_ssize_t;
その後
linux/types.h
typedef __kernel_ssize_t ssize_t;
環境に応じて、intまたはlongが間接的にtypedefされている。
特徴 |
用途 |
UNIXのシステムコールで、返り値に長さ(0以上)またはエラー(-1)を返す場合に使われている。エラー時、実際のエラーの種類はerrnoに格納される。
次のような関数がssize_t型で値を返す。
基本的にサイズが負の数になることはなく、またエラーの場合も-1を返して実際のエラー番号はerrnoである。無駄が多く、あまり賢くない設計である。
しかも、size_tと比較しても有効符号長が1ビット短くなるため、長さを表わすにも不利である。
サフィックス |
数値の型を表わすサフィックスは、特に定義されていない。
printf |
printfののフォーマット文字列では、C99以降では長さとしてzを使う(例えば%zd)。
リンク |
通信用語の基礎知識検索システム WDIC Explorer Ver 7.04a (27-May-2022) Search System : Copyright © Mirai corporation Dictionary : Copyright © WDIC Creators club |