[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
typeof
による型の参照 式の型を参照するには、typeof
を使う方法もある。
このキーワードの構文は、sizeof
に良く似ているが、意味的には
typedef
で定義される型名に似ている。
typeof
の引数には、二通りの書き方がある。
式を与える方法と型を与える方法である。
以下に式を指定する例を示す。
typeof (x[0](1)) |
ここでは、x
が関数の配列であることを仮定している。
この構文で記述される型は、関数の戻り値の型になる。
次に、引数に型名を指定した例を示す。
typeof (int *) |
これで記述される型は、int
へのポインタという型になる。
ANSI C プログラムからインクルードされたときに正しく動作しなければならない
ヘッダファイルを書く場合は、typeof
の代わりに __typeof__
を
使うこと。
See section もう一組のキーワード.
typeof
構文は、typedef 名が書けるところならどこにでも置ける。
例えば、宣言や、キャストや、sizeof
や typeof
の中で
使うことができる。
y
の型を、x
が指しているものの型として
宣言している。
typeof (*x) y; |
y
をその様な値の配列として宣言している。
typeof (*x) y[4]; |
y
を文字へのポインタ配列として宣言している。
typeof (typeof (char *)[4]) y; |
これは、以下のようなおなじみの C の宣言と同じである。
char *y[4]; |
typeof
を使った宣言の意味を知るために、そして
何故便利な書き方なのかを知るために、以下のマクロを使って書き直してみる。
#define pointer(T) typeof(T *) #define array(T, N) typeof(T [N]) |
こうしておくと、以下のように宣言を書き換えることができる。
array (pointer (char), 4) y; |
つまり、arrray (pointer (char), 4)
は、char
への
4 個のポインタの配列の型である。
This document was generated
using texi2html 1.78.