true;});前のページへ1|2LP64LP64は、主にSGIをはじめとするUNIX系の環境で採用される64ビットプログラミングデータモデルです。「I32LP64」と呼ばれることもあります。LP64では、ポインタが64ビットになりますが、int型は従来どおり32ビットのままです。注意しなければならないのはlong型の扱いです。LP64のデータモデルでは、long型は64ビットになります。LLP64LLP64は、Windows系の環境で用いられる64ビットプログラミングデータモデルです。「IL32P64」と呼ばれることもあります。LLP64では、ポインタだけが64ビットになります。int型とlong型は32ビットのままです。64ビットの型を使う場合は、「__int64」など別途明示的に宣言されている型を使います。Windows環境については、のちほど新しく定義されたデータ型を紹介します。ILP64ILP64は、ポインタもint型もlong型も、すべて64ビットとして扱われます。SGIはILP64の64ビットプログラミングデータモデルもサポートしていますが、どちらかというとLP64のほうを好んで使っているようです。5にまとめてみました。この3つのデータモデルを比較すると一目瞭然なのですが、それぞれのシステム向けに別のコンパイラを用いてリコンパイルする場合は、整数データの型に注意しなければなりません。C/C++プログラミング言語における3つのデータモデルデータモデルシステムchar型(ビット)short型(ビット)int型(ビット)long型(ビット)ポインタ(ビット)LLP64(IL32P64)Win64816323264LP64(I32LP64)UNIX系816326464ILP64UNIX系816646464たとえば、long型を32ビットとして扱っているようなC/C++のコードをLP64環境に持ってくる際はlong型に注意しなければなりませんし、その逆のケースも同じです。このようなデータモデルの違いは、C/C++プログラミング言語に新しい基本的なデータ型を加えるというメカニズムがないために起こっています。64ビットシステムへの移行にあたり、C/C++アプリケーション開発者はスカラの(単一の)計算をする場合、既存のデータ型のマッピングを変えるか、または新しいデータ型を加える必要があります(64ビットへの移行にあたり、それまで「整数=32ビット」があたりまえと考えてしまっていたプログラマは、移植の際に自分のプログラムコードを再度見直す必要性が出てくるかもしれません)。3つのうちのどのプログラミングデータモデルが優れているかというと、それぞれ一長一短があるので一概には答えられません。ILP32環境からほんの少しの変更が加えられたLLP64が、もっとも混乱の少なく扱いやすいといえるかもしれません。LP64は、これら両者のちょうど中間に位置するプログラミングデータモデルといえます。データモデルを表す記号ところで、ここまでご覧になってすでにお気づきかもしれませんが、各データモデルで使われている記号「I」「L」「P」の3つは、それぞれ「I=int型」「L=long型」「P=ポインタ」という意味です。「I32LP64」であれば「I=32(ビット)で、LとP=64(ビット)」のデータモデルである、ということがわかります。C/C++では、この3つのデータ型にとくに気をつけなければなりません。称して情報を盗む「ご注意!!OFFICEのプロダクトキーが不正コピーされています。Japanスマートジャパン3Dモデラボキャリア@IT自分戦略研究所エンジニアライフディルバートアプリITmediaねとらぼねこらぼついトピ!ITmediaはアイティメディア株式会社の登録商標です。