int main ()
{
int arr[2][3];
foo (arr);
return 0;
}
void foo(int (*arr)[3])
{
**arr = 0;
}
やあ、
Keilでは、上記のコードはfooの呼び出しに対して警告C182を提供し、fooの定義で警告c235を提供します。ただし、VC++では正常に機能するようです。なぜ、どのように解決するかについてのアイデアはありますか?
ありがとう!
関数のプロトタイプを提供して、呼び出しが行われたときにコンパイラーが何が起こっているかを認識できるようにします。
void foo(int (*arr)[3]);
int main ()
{
int arr[2][3];
foo (arr);
return 0;
}
void foo(int (*arr)[3])
{
**arr = 0;
}
プロトタイプがない場合、コンパイラーは渡されたパラメーターと関数が返すものについて仮定を立てる必要があります。コンパイラーは、コンパイラーのバージョンおよびコンパイラー設定に応じて、これに関する警告を発行する場合と発行しない場合があります。