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

时间:2019-09-25 06:37:32

标签: c mingw-w64 size-t

我在Windows 10(64位安装)上使用mingw-w64编译器(gcc 8.1.0)。我的期望是使size_t的最大值等于(2 ^ 64-1)。但是我的程序始终将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=c11,并且gcc --version返回:

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

1 个答案:

答案 0 :(得分:5)

在检查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标志。