5.2 微調整におけるプラグマの使用
より詳細なほうが型に基づいた解析に有利な場合は、このセクションで説明するプラグマを使用すると、適用されている別名レベルを無効にし、個々の型またはポインタ変数間の別名関係を変換単位で指定できます。これらのプラグマは、いくつかの特定のポインタ変数がいずれかの使用可能なレベルで許可されていない不規則な方法で使用されていても、変換単位でのポインタの使用がいずれかの使用可能な別名レベルと一貫していているときに、最大の利益を提供します。
注 - プラグマより先に命名済みの型または変数を宣言しない場合、警告メッセージが発行され、プラグマが無視されます。プラグマの意味の適用される最初のメモリー参照のあとにプラグマを配置した場合、プログラムは未定義の結果を生成します。
プラグマの定義では、次の表に示す用語を使用します。
| |
level
|
|
type
| 次のいずれかです。 char、short、int、long、long long、float、double、long double
void。すべてのポインタの型を示します。
typedef name。typedef 宣言で定義される型の名前。
struct name。struct tag 名が後続するキーワード struct のことです。
union。union tag 名が後続するキーワード union のことです。
|
pointer_name
| 翻訳単位におけるポインタ型の変数の名前
|
|