[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

17.4 ソース言語のデータ型のレイアウト

以下のマクロ群で、コンパイルされるプログラムで使用される基本データ型の 大きさと特徴を定義する。 前節のマクロと違うのは、C 言語、C 言語に関係する言語に固有の特徴を 示すものであり、基本的なストレージ配置を示すものでは ないという点にある。

INT_TYPE_SIZE

ターゲットマシンの int 型の大きさをビット数で表す C の式。 これを定義しない場合は、デフォルトで1ワードになる。

MAX_INT_TYPE_SIZE

ターゲットマシンの int 型の大きさの最大値をビット数であらわしたもの。 定義されていない場合は、デフォルトで INT_TYPE_SIZE になる。 定義する場合は、INT_TYPE_SIZE が実行時に取りうる最大の定数値に 定義する。これは、cpp で使われる。

SHORT_TYPE_SIZE

ターゲットマシンの short 型の大きさをビット数で表す C の式。 これを定義しない場合は、デフォルトで半ワードになる。 (もしこれが一ストレージ単位よりも小さくなるなら、一単位に切り上げられる。)

LONG_TYPE_SIZE

ターゲットマシンの long 型の大きさをビット数で表す C の式。 これを定義しない場合は、デフォルトで一ワードになる。

MAX_LONG_TYPE_SIZE

ターゲットマシンの long 型の大きさの最大値をビット数であらわしたもの。 定義されていない場合は、デフォルトで LONG_TYPE_SIZE になる。 定義する場合は、LONG_TYPE_SIZE が実行時に取りうる最大の定数値に 定義する。これは、cpp で使われる。

LONG_LONG_TYPE_SIZE

ターゲットマシンの long long 型の大きさをビット数で表す C の式。 これを定義しない場合は、デフォルトで二ワードになる。 GNU Ada をサポートする場合には、このマクロの値は少なくとも 64 でなければ ならない。

CHAR_TYPE_SIZE

ターゲットマシンの char 型の大きさをビット数で表す C の式。 これを定義しない場合は、デフォルトで1/4ワードになる。 (もしこれが一ストレージ単位よりも小さくなるなら、一単位に切り上げられる。)

MAX_CHAR_TYPE_SIZE

ターゲットマシンの char 型の大きさの最大値をビット数であらわしたもの。 定義されていない場合は、デフォルトで CHAR_TYPE_SIZE になる。 定義する場合は、CHAR_TYPE_SIZE が実行時に取りうる最大の定数値に 定義する。これは、cpp で使われる。

FLOAT_TYPE_SIZE

ターゲットマシンの float 型の大きさをビット数で表す C の式。 これを定義しない場合は、デフォルトで1ワードになる。

DOUBLE_TYPE_SIZE

ターゲットマシンの double 型の大きさをビット数で表す C の式。 これを定義しない場合は、デフォルトで2ワードになる。

LONG_DOUBLE_TYPE_SIZE

ターゲットマシンの long double 型の大きさをビット数で表す C の式。 これを定義しない場合は、デフォルトで2ワードになる。

WIDEST_HARDWARE_FP_SIZE

ハードウェアでサポートされている最大精度の浮動小数点形式の大きさを ビット数で表す C の式。 このマクロを定義する場合は、LONG_DOUBLE_TYPE_SIZE 以下の値を 指定しなければならない。 このマクロを定義しない場合は、LONG_DOUBLE_TYPE_SIZE の値が デフォルトになる。

DEFAULT_SIGNED_CHAR

値が 1 か 0 になる式で、それぞれchar 型がデフォルトでは符号付きか 符号無しかを示す。ユーザは、いつでも ‘-fsigned-char’ や ‘-funsigned-char’ オプションで変更できる。

DEFAULT_SHORT_ENUMS

enum 型に、その型の取りうる値の範囲を表現するのに必要な バイト数のみを割り当てるかどうかを指定する C の式を定義する。 ゼロでない値を指定すると必要なバイト数のみを割り当てる。 値がゼロなら、全ての enum 型は int と同じく割り当てられる。

このマクロを定義しなければ、デフォルトは 0 である。

SIZE_TYPE

大きさを示す値に使うデータ型名を 表す文字列を指定する C の式を定義する。 typedef 名 size_t は、この文字列の内容を使って定義される。

この文字列にはキーワードを二つ以上書いても良い。 その場合、キーワード同士を空白で区切り、最初に長さを表すキーワードを 書き、次に必要なら unsigned を、最後に int を 書くようにする。 この文字列は、‘c-decl.c’ というファイルの関数 init_decl_processing で定義されているデータ型名の一つに厳密に一致しなければならない。 int を省略したり、順序を変えたりしてはならない。 そうすると、起動時にコンパイラが異常終了してしまう。

このマクロを定義しないと、デフォルトは "long unsigned int" に なる。

PTRDIFF_TYPE

二つのポインタ同士の引き算の結果に使うデータ型名を 表す文字列を指定する C の式を定義する。 typedef 名 ptrdiff_t は、この文字列の内容を使って定義される。 詳細は上の SIZE_TYPE を参照のこと。

このマクロを定義しないと、デフォルトは "long int" になる。

WCHAR_TYPE

幅広文字に使うデータ型名を表す文字列を指定する C の式を定義する。 typedef 名 wchar_t は、この文字列の内容を使って定義される。 詳細は上の SIZE_TYPE を参照のこと。

このマクロを定義しないと、デフォルトは "int" になる。

WCHAR_TYPE_SIZE

幅広文字に使うデータ型の大きさをビット数で表した C の式。 これは cpp で使われる。cpp は、WCHAR_TYPE を 使うことができない。

MAX_WCHAR_TYPE_SIZE

幅広文字のデータ型の最大の大きさをビット数で表したもの。 これが定義されていない場合は、デフォルトは WCHAR_TYPE_SIZE に なる。定義されている場合は、WCHAR_TYPE_SIZE が実行時に 取りうる最大値となる定数値になる。 これは、cpp で使われる。

OBJC_INT_SELECTORS

Objective C のセレクタの型を int とすべきなら、 このマクロを定義する。

このマクロが定義されていなければ、セレクタは struct objc_selector * 型になる。

OBJC_SELECTORS_WITHOUT_LABELS

コンパイラが、全てのセレクタを一つのベクトルに統合することができ、 そのベクトルの開始点のラベル一つだけを使う場合には、このマクロを 定義する。 定義しない場合は、コンパイラは各セレクタに各々のアセンブララベルを 与えなければならない。

一部の機種では、各セレクタに別々のラベルを与えることが大事で、 そうすることによってリンカが重複したセレクタを消去出来るようになる。

TARGET_BELL

C の定数式で、エスケープ・シーケンス ‘\a’ に対応する整数値を 表す。

TARGET_BS
TARGET_TAB
TARGET_NEWLINE

C の定数式で、それぞれ、エスケープ・シーケンス ‘\b’、‘\t’、 ‘\n’ に対応する整数値を表す。

TARGET_VT
TARGET_FF
TARGET_CR

C の定数式群で、それぞれ、エスケープ・シーケンス ‘\v’、‘\f’、 ‘\r’ に対応する整数値を表す。


This document was generated using texi2html 1.78.