次に示すプログラミング例 foo.c では、LP64 と ILP32 のデータ型モデルの効果を直接的に示しています。同じプログラムを 32 ビットまたは 64 ビットプログラムとしてコンパイルすることができます。
#include <stdio.h> int main(int argc, char *argv[]) { (void) printf("char is ¥t¥t%lu bytes¥n", sizeof (char)); (void) printf("short is ¥t%lu bytes¥n", sizeof (short)); (void) printf("int is ¥t¥t%lu bytes¥n", sizeof (int)); (void) printf("long is ¥t¥t%lu bytes¥n", sizeof (long)); (void) printf("long long is ¥t¥t%lu bytes¥n", sizeof (long long)); (void) printf("pointer is ¥t%lu bytes¥n", sizeof (void *)); return (0); } |
32 ビットコンパイルの結果は、次のようになります。
% cc -O -o foo32 foo.c % foo32 char is 1 bytes short is 2 bytes int is 4 bytes long is 4 bytes long long is 8 bytes pointer is 4 bytes |
64 ビットコンパイルの結果は、次のようになります。
% cc -xarch=v9 -O -o foo64 foo.c % foo64 char is 1 bytes short is 2 bytes int is 4 bytes long is 8 bytes long long is 8 bytes pointer is 8 bytes |
デフォルトのコンパイル環境は、移植性を最大限にするように設計されているため、32 ビットのアプリケーションを作成します。