C error: size of array is too large

C error: size of array is too large

我试过编译这段 C 代码:

#define MAX_INT 2147483647

int main()
{
   int vector[MAX_INT];
   return 0;
}

我正在使用 MinGW 和 MSYS 项目(即 MinGW/MSYS)提供的 C 编译器。 MinGW 编译器是 "gcc version 6.3.0 (MinGW.org GCC-6.3.0-1)",这是最新版本,具有 win32 线程模型,而 MSYS 编译器是 "gcc version 3.4.4 (msys special)",具有 posix 线程模型。

即MAX_INT常量值设置在"limits.h"header提供的常量“__INT_MAX__”中。

如何避免这个问题并编译我最简单的代码?

您的堆栈不会那么大以包含数组这是主要问题。 尝试在编译

时按照 Increase stack size when compiling with mingw? 中的建议使用以下行设置堆栈大小
gcc -Wl,--stack,N
where N is stack size. E.g. gcc -Wl,--stack,4194304

另外如评论中所述,您可能必须针对 64 位进行编译,并且需要那么多 RAM 或可能需要一个大页面文件。