警告:数组元素超过100个

warning:array elements are more than 100

本文关键字:100个 数组元素 警告      更新时间:2023-10-16

我有一段代码声明了一个数组。

#define MAX_ELEMENT 150
Struct_arr  arr_elem[MAX_ELEMENT];

这里CCD_ 1是一个结构。在编译时,我收到了后面这行的警告:

警告:数组元素超过100

有人能帮我一下吗?

问候,vivG

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

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

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

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

警告说您正试图在堆栈上分配一个大数组。在典型的linux系统上,堆栈有8Mb,因此很容易达到这个限制(导致segfault)。这就是为什么你有这个警告。

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

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

这分配了一个150个元素的向量,但它可以动态调整大小,所以如果你"以防万一"分配了这么大的数组,那么std::向量就更合适了。

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