Sun Studio 12: C ユーザーズガイド

unintptr_t などの便利な型

<inttypes.h> ファイルには、ポインタを保持するのに十分な大きさの符号付き整数型と符号なし整数型 intptr_tuintptr_t が含まれます。また、符号付きと符号なし整数型の中で最長 (ビット) の整数型である intmax_tuintmax_t も提供します。

uintptr_t 型は、符号なし long などの基本型ではなく、ポインタ用の整数型として使用してください。ILP32 と LP64 コンパイル環境で符号なし long とポインタが同じサイズであるとしても、uintptr_t を使用するということは、データ型モデルが変わった場合に、その影響を受けるのは uintptr_t の定義だけになることを意味します。このため、ほかの多くのシステムにコードを移植できるようになります。また、これは、C で自分の意図していることをより明確に表現する手段になります。

intptr_t および uintptr_t 型は、アドレス演算でポインタの型変換を行うときに大変役立ちます。この目的には、long や符号なし long ではなく、intptr_tuintptr_t 型を使用してください。