【发布时间】:2026-02-06 21:10:02
【问题描述】:
在将数组作为参数传递时,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++...)
【问题讨论】:
-
@Richard:该问题的答案包含此问题的线索。然而问题是不同的。这个是关于类型保存的。
标签: c++ strong-typing