Windows 为什么Cygwin64';s MinGW编译器生成32位指针而不是64位指针?

Windows 为什么Cygwin64';s MinGW编译器生成32位指针而不是64位指针?,windows,pointers,cygwin,mingw,sizeof,Windows,Pointers,Cygwin,Mingw,Sizeof,在“C”程序中执行“sizeof(char*)”时,使用Cygwin64的MinGW编译器在64位窗口中显示指针的长度为4字节,而不是8字节。我特别使用的是编译器“i686-w64-mingw32-gcc.exe”,这是迄今为止我在Cygwin64中找到的唯一一个MinGW编译器。我读过Windows中模拟32位环境的“WOW64”系统,但怀疑这与问题有关。到目前为止,我读到的所有内容都表明,来自64位MinGW编译器的指针应该是8字节长。因此,我对此感到困惑,当然,我想知道如何才能因此编译使用

在“C”程序中执行“sizeof(char*)”时,使用Cygwin64的MinGW编译器在64位窗口中显示指针的长度为4字节,而不是8字节。我特别使用的是编译器“i686-w64-mingw32-gcc.exe”,这是迄今为止我在Cygwin64中找到的唯一一个MinGW编译器。我读过Windows中模拟32位环境的“WOW64”系统,但怀疑这与问题有关。到目前为止,我读到的所有内容都表明,来自64位MinGW编译器的指针应该是8字节长。因此,我对此感到困惑,当然,我想知道如何才能因此编译使用64位指针和Cygwin64的MinGW的程序。

没有默认的交叉编译器,而是有 64位和32位为2组

mingw64-x86_64-*
mingw64-i686-*


我决定使用我下载的另一个MinGW编译器。在我隔离提供MinGW编译器的特定Cygwin64下载文件,然后解包并搜索其可执行文件之后,我发现它只包含上面提到的一个编译器,即32位MinGW编译器。因此,由于我还不能从matzeri在下面提供的关于该网页信息的参考中获得有用的意义,我认为以下是我迄今为止解决该问题的最佳方案。我找到了一个在线可用的非Cygwin 64位MinGW编译器,并安装了它,以便在需要创建真正的64位可执行文件时,除了Cygwin的各种编译器之外,还可以使用它。我从网站“”下载了它,它似乎可以很好地生成64位指针!(警告:在使用防病毒应用程序ClamWin进行扫描时,我查看了一个名为“Dev Cpp 5.11 TDM-GCC 4.9.2 Orwell+MinGW”的64位MinGW编译器,该编译器被大量引用!)

i686-w64-mingw32-GCC是一个32位编译器<代码>i686=32位平台谢谢你,这很有意义。但是Cygwin64里面不是也有一个64位的MinGW编译器吗?你可能会这么想,因为它是为64位系统设计的。你参考的网页包含了有趣的信息,但到目前为止我还不能理解它。我不明白他指的是什么。具体地说,上面提到的“--host”项让我感到困惑。我不知道这些适用于哪里。当我用上面的编译器或者简单地用“gcc.exe”编译器来尝试它们时,我得到了“unrecognized command line option”。有人能解释一下这是怎么回事吗?