AttributeNonNull
C++ 検査 への移動
説明
nonnull 属性の付いた引数を持つ関数へ、ヌル ポインタの引数が渡されていないかどうかを確認します。
AttributeNonNull 検査をサポートするには、関数宣言で、nonnull 属性を指定します:
__attribute__((nonnull(arg_number, ...)))
ここでの arg_number, ... には、ヌル ポインタを渡してはならない引数の番号を指定します。arg_number が指定されない場合、すべてのポインタ引数が nonnull として扱われます。
たとえば、次の宣言があるとします。
void * my_copy (void *destination, const void *source, int length)
__attribute__((nonnull (1, 2)));
ここでは、my_copy の呼び出しの中で、destination および source 引数が NULL であってはならないと定義しています。AttributeNonNull 検査により、destination または source 引数にヌル ポインタが渡されることが判明すると、AttributeNonNull 検査は my_copy 内で違反を生成します。
メモ: nonnull 属性がサポートされているのは C++ 検査に対してのみで、C++Builder コンパイラでは無視されます。