0

Microsoft Visual C++ 2010 Express が次のようなコードをサポートしていない理由がわかりません。

void ar(int n,int m, short ar[n][m]);

起こることは、文字 n と m が赤で隠蔽され、次のように表示されることです。

//Error: a parameter is not allowed.

私は C でコーディングしており、現在ポインターと配列について学習しようとしています。

4

3 に答える 3

0

渡された配列サイズを変数に依存させることはできません (さらに、同じ署名で渡されます)。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 で非標準のエキゾチックな設定が有効になっているか、適切なコンパイラが強く必要とされています。

于 2013-05-05T19:39:51.413 に答える