Cで
void foo(int size ,int a[][size])
{
printf("%d\n", a[0][0]);
}
int main(int argc, char const *argv[])
{
int a[5][5] = {0};
foo(5, a);
return 0;
}
正常に動作します
でもC++でも同じ
void foo(int size, int a[][size])
{
cout << a[0][0] << endl;
}
int main(int argc, char const *argv[])
{
int a[5][5] = {0};
foo(5, a);
return 0;
}
動作しません。次の 2 つのエラーが発生します。
error: use of parameter ‘size’ outside function body
In function ‘void foo(...)’:
error: ‘a’ was not declared in this scope
なぜこれが起こるのか誰でも説明できますか?C または C++ のコンパイラに依存する問題についても説明してください。