################################################################################ ●Solaris8に移植 ################################################################################ @Solaris8への移植を考慮し『標準関数でのインタフェース上使わなければならない場合 以外』はlong/unsigned longは使用しない方向が望ましいです。int/unsigned intを 使用する方向とします。 Alongは64Bitsアプリケーションとした場合、64bit(8ビット)となります。 Bpthread_t(スレッドID)/pid_t(プロセスID)の型は32Bitsとなります。 Cデータ型サイズ (単位 : ビット) +--------------+------------------------------------+------------------+ |C データ型 | ILP32(-xarch=v8又は-xarch指定なし) |LP64(-xarch=v9) | +--------------+------------------------------------+------------------+ |char | 8 |変更なし | +--------------+------------------------------------+------------------+ |short | 16 |変更なし | +--------------+------------------------------------+------------------+ |int | 32 |変更なし | +--------------+------------------------------------+------------------+ |long | 32 |64 | +--------------+------------------------------------+------------------+ |long long | 64 |変更なし | +--------------+------------------------------------+------------------+ |ポインタ | 32 |64 | +--------------+------------------------------------+------------------+ |enum | 32 |変更なし | +--------------+------------------------------------+------------------+ |float | 32 |変更なし | +--------------+------------------------------------+------------------+ |double | 64 |変更なし | +--------------+------------------------------------+------------------+ |long double |128 |変更なし | +--------------+------------------------------------+------------------+ ・これらの型はすべて、ILP32 コンパイル環境では 32 ビット、LP64 コンパイル環境 では 64 ビットになります。 clock_t : システムクロック時間を表わします。 dev_t : デバイス番号に使用される型です。 off_t : ファイルサイズとオフセット用に使用される型です。 ptrdiff_t: 2 つのポインタの減算結果を示す符号付き整数型です。 size_t : メモリー内のオブジェクトのサイズ(バイト単位)用に使用される型。 ssize_t : バイト数またはエラーを返す関数によって使用される型です。 time_t : 秒単位の時間用に使用される型です。 ・他に、標準ヘッダで定義されている構造体でlongを使用されている場合は、構造体の サイズも異なります。 <注意> ・以下ような構造は極力しない方向として下さい。(longも64Bits にした場合同じです) 仮にしたい場合には、Solaris8では変更要なので注意して下さい。 ×(64Bits にした場合、コンパイルエラーとなる) typedef long long long_64 typedef union { struct { long_64 g:1; long_64 rsv1:2; long_64 cxt:13; long_64 rsv2:6; long_64 va_tag:42; } tte_tag_fld; long_64 tte_tag; }tte_tag_t; ↓ ○ typedef union { struct { uint_least64_t g:1; uint_least64_t rsv1:2; uint_least64_t cxt:13; uint_least64_t rsv2:6; uint_least64_t va_tag:42; }tte_tag_fld; uint_least64_t tte_tag; }tte_tag_t; ・#define等で構造型のオフセット位置等は待たないこと。 (32/64でずれる可能性があります)