似乎 g++ 在将数组作为参数传递时忽略了数组大小的差异。即,即使使用-Wall
.
void getarray(int a[500])
{
a[0] = 1;
}
int main()
{
int aaa[100];
getarray(aaa);
}
现在,我了解了传递指针的底层模型,显然我可以将函数定义为getarray(int *a)
. 但是,我希望 gcc 在我明确指定数组大小时至少会发出警告。
有没有办法绕过这个限制?(我来宾 boost::array 是一种解决方案,但我有很多使用 c 样式数组的旧代码,这些代码被提升为 C++……)