インテル® C++ コンパイラー XE 13.1 ユーザー・リファレンス・ガイド
C および C++ 言語では、extern キーワードを使用して別のモジュールに配列を定義することができます。 これらの配列は、次元を指定しないで定義することができます。次に例を示します。
extern char an_undimensioned_array [];
コンパイラーは、外部に定義された配列に対して複数の定義を使用することができます。リンク時に、コンパイラーは最大範囲の配列定義を使用します。
これらの配列をチェックするため、コンパイラーは配列の最後を示すグローバルシンボルを定義します。ただし、次元のない配列をチェックすると、複数の定義によるリンカーエラーが発生します。
このリンカーエラーを修正するには、次のいずれかの操作を行います。
1 つの配列定義のみ使用します。
/Qcheck-pointers-undimensioned- (Windows*) または -no-check-pointers-undimensioned (Linux*) コンパイラー・オプションを指定して、範囲のない配列のチェックを無効にします。
このコンパイラー・オプションは、範囲のない配列を宣言したモジュールのチェックを無効にします。この場合でも、ポインターチェッカーは範囲を含む配列を定義したモジュールの配列をチェックします。