通信用語の基礎知識 全国のICカードこれひとつ 戻る

通常PC用 / 人気 更新 今日 カテ
電子計算機 > 仕様・構造 > ソフトウェア > プログラミング言語 > 言語仕様 > データ型・構造体 > 独自のデータ型・構造体
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)。

リンク
用語の所属
_t
関連する用語
size_t

[再検索] [戻る]


通信用語の基礎知識検索システム WDIC Explorer Ver 7.04 (07-Mar-2021)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club
KisoDic