Solaris 64 ビット 開発ガイド

intlong が同じサイズであると仮定しない

intlong は、ILP32 では実際には区別されないため、意図的あるいは非意図的にそれらは交換可能であると仮定して、既存のコードの多くで区別することなく使用されています。このように intlong が同じサイズとして仮定しているコードは、ILP32 および LP64 で動作するように変更しなければなりません。ILP32 データ型モデルでは、intlong は 32 ビットですが、LP64 データ型モデルでは long は 64 ビットです。次に例を示します。


int waiting;
long w_io;
long w_swap;
...
waiting = w_io + w_swap;

この場合、次の警告が出ます。


warning: assignment of 64-bit integer to 32-bit integer