Microsoft Visual C++ 2010 Express が次のようなコードをサポートしていない理由がわかりません。
void ar(int n,int m, short ar[n][m]);
起こることは、文字 n と m が赤で隠蔽され、次のように表示されることです。
//Error: a parameter is not allowed.
私は C でコーディングしており、現在ポインターと配列について学習しようとしています。
渡された配列サイズを変数に依存させることはできません (さらに、同じ署名で渡されます)。Clangでコンパイルされますが、合法的なC89ではなく、C99であり、AFAIK Microsoft VCはそれを完全にはサポートしていません。
注意: 関数とそのパラメーターを同じ名前で呼び出していると、おかしな、あいまいなエラーが発生する可能性があります。関数または最後のパラメーターの名前を変更します。
編集:これをコンパイルしてみてください:
void ar(int n,int m, short ars[n][m])
{
}
int main()
{
short a[1][2] = {{22,22}};
ar(1,2,a);
}
私のシステムにインストールされているすべてのコンパイラで問題なく動作するため、コンパイルできない場合は、IDE で非標準のエキゾチックな設定が有効になっているか、適切なコンパイラが強く必要とされています。