JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris Studio 12.2: C ユーザーガイド
search filter icon
search icon

ドキュメントの情報

はじめに

1.  C コンパイラの紹介

2.  C コンパイラ実装に固有の情報

3.  C コードの並列化

4.  lint ソースコード検査プログラム

5.  型に基づく別名解析

6.  ISO C への移行

7.  64 ビット環境に対応するアプリケーションへの変換

7.1 データ型モデルの相違点

7.2 単一ソースコードの実現

7.2.1 派生型

7.2.1.1 <sys/types.h>

7.2.1.2 <inttypes.h>

固定幅の整数型

unintptr_t などの便利な型

定数マクロ

制限

書式文字列マクロ

7.2.2 ツール

7.2.2.1 lint

7.3 LP64 データ型モデルへの変換

7.3.1 整数とポインタのサイズの変更

7.3.2 整数とロング整数のサイズの変更

7.3.3 符号拡張

7.3.4 整数の代わりのポインタ演算

7.3.5 構造体

7.3.6 共用体

7.3.7 型定数

7.3.8 暗黙の宣言に対する注意

7.3.9 sizeof( ) は符号なし long

7.3.10 型変換で意図を明確にする

7.3.11 書式文字列の変換操作を検査する

7.4 そのほかの注意事項

7.4.1 サイズが大きくなった派生型

7.4.2 変更の副作用の検査

7.4.3 long のリテラル使用の合理性の確認

7.4.4 明示的な 32 ビットと 64 ビットプロトタイプに対する #ifdef の使用

7.4.5 呼び出し規則の変更

7.4.6 アルゴリズムの変更

7.5 変換前の確認事項

8.  cscope: 対話的な C プログラムの検査

A.  機能別コンパイラオプション

B.  C コンパイラオプションリファレンス

C.  ISO/IEC C 99 の処理系定義の動作

D.  C99 でサポートされている機能

E.  ISO/IEC C90 の処理系定義の動作

F.  ISO C データ表現

G.  パフォーマンスチューニング

H.  K&R Solaris Studio C と Solaris Studio ISO C の違い

索引

7.1 データ型モデルの相違点

32 ビットと 64 ビットコンパイル環境の最大の違いは、データ型モデルにあります。

32 ビットアプリケーション用の C のデータ型モデルは ILP32 モデルです。この名前は、integer、long、pointer が 32 ビットデータ型であることから名付けられています。long と pointer が 64 ビットの大きさになったことから名付けられた LP64 データ型モデルは、業界の関連企業から構成されるコンソーシアムが作成したものです。残りの C のデータ型の intlong longshortchar はどちらのデータ型モデルでも同じです。

C の整数型間の標準の関係は、次に示すようにデータ型モデルに関係なく有効です。

sizeof (char) <= sizeof (short) <= sizeof (int) <= sizeof (long)

ILP32 と LP64 データ型モデルの基本的な C のデータ型と対応するサイズ (単位: ビット) は、次の表に示すとおりです。

表 7-1 ILP32 と LP64 のデータ型のサイズ

C データ型
LP32
LP64
char
8
8
short
16
16
int
32
32
long
32
64
long long
64
64
pointer
32
64
enum
32
32
float
32
32
double
64
64
long double
128
128

現在の 32 ビットアプリケーションでは integer、pointer、long が同じサイズであるとみなされることが多くあります。LP64 データ型モデルでは、long と pointer のサイズが変更されているため、この変更だけでも、ILP32 から LP64 への変換で多くの問題が発生する可能性があります。

また、宣言と型変換を調べることも非常に重要です。データ型が変わると、式の評価方法が影響を受ける可能性があります。データ型のサイズが変わると、標準 C 変換規則の処理が影響を受けます。意図したことを正しく示すには、定数の型を明示的に宣言してください。式で型変換を使用して、意図したとおりに式が評価されるようにすることもできます。このことは、意図したことを指示する上で明示的な型変換が欠かせない符号拡張部で特に必要になります。