Windows 10/mingw-w64 编译器上 size_t 的最大大小

Maximum size of size_t on Windows 10/ mingw-w64 compiler

我在 Windows10(64 位安装)上使用 mingw-w64 编译器 (gcc 8.1.0)。我的期望是 size_t 的最大值等于 (2^64 - 1)。但是我的程序总是 return SIZE_MAX 的值作为(仅 2^32 - 1)。可能是什么原因?我怎样才能在我的 C 程序中达到 (2^64 - 1) 的最大值?

我正在学习 C 语言,想看看书中的说法,即在现代计算机上 size_t 的最大大小可以是 (2^64 - 1)。我尝试检查的代码如下:

#include <stdio.h>
#include <stdint.h>

int main(){
    printf("%d\n", sizeof(size_t));
    printf("%zu\n", SIZE_MAX); 
    return 0;
}

输出:

4
4294967295

我在编译期间只使用了一个标志 -std=c11gcc --version returns:

gcc.exe (i686-posix-dwarf-rev0, Built by MinGW-W64 project) 8.1.0

检查 gcc --version 时,您声明您得到

gcc.exe (i686-posix-dwarf-rev0, Built by MinGW-W64 project) 8.1.0

输出的重要部分是:i686-posix-dwarf-rev0,更具体地说是 i686 部分。

这告诉我们 GCC 是作为 32 位应用程序构建的(i686 是 32 位系统),并且将默认创建 32 位可执行文件。

要构建 64 位可执行文件,您需要添加 -m64 标志。