我有一段声明数组的代码。
#define MAX_ELEMENT 150
Struct_arr arr_elem[MAX_ELEMENT];
这里Struct_arr
是一个结构。在编译时,我收到后续行的警告:
warning:array elements are more than 100
有人可以帮我解决这个问题吗?
的问候, vivG
答案 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就更容易了。
最后,只使用普通的旧常量而不是宏,在这种特殊情况下使用它们确实没有任何好处。