警告:数组元素超过100

时间:2011-05-30 06:39:28

标签: c++

我有一段声明数组的代码。

#define MAX_ELEMENT 150
Struct_arr  arr_elem[MAX_ELEMENT];

这里Struct_arr是一个结构。在编译时,我收到后续行的警告:

warning:array elements are more than 100

有人可以帮我解决这个问题吗?

的问候, vivG

2 个答案:

答案 0 :(得分:4)

这几乎可以肯定是代码中某个#warning指令的结果。 C ++本身并不限制你使用99个数组元素,这将是出于某种原因引入的人为限制。

我的建议是搜索该消息,看看是否有任何评论附近解释为什么这是一个问题。类似的东西:

fgrep 'array has more than' *.c *.cpp *.h *.hpp

作为类UNIX操作系统将是一个很好的起点。

答案 1 :(得分:1)

警告说你正试图在堆栈上分配一个大数组。在典型的Linux系统上,堆栈有8Mb,因此很容易达到该限制(导致段错误)。这就是你有这个警告的原因。

当您将问题标记为C ++时,请注意在C ++中使用C风格的数组并不常见。你宁愿使用

std::vector<Struct_arr> arr_elem(150);

这会分配150个元素的向量,但它可以动态调整大小,所以如果你“大小写”分配了这么大的数组,那么std :: vector就更容易了。

最后,只使用普通的旧常量而不是宏,在这种特殊情况下使用它们确实没有任何好处。