【问题标题】:Why size of void pointer is 4 on Windows 64-bit platform为什么 void 指针的大小在 Windows 64 位平台上为 4
【发布时间】:2013-05-25 07:05:43
【问题描述】:

我有以下打印 4 的程序。我在 Windows 7 64 位上运行该程序。它不应该为 64 位平台打印 8 吗?提前致谢。

#include <stdio.h>
void main()
{
    printf("%d", sizeof(void*));
}

【问题讨论】:

  • 不依赖编译器吗?
  • 您确定要构建 64 位二进制文​​件吗?
  • 您使用的是什么版本的编译器?如果您的编译器是 32 位的,它将使用 WOW64。并且会表现得像普通的 32 位进程
  • 请显示您的编译器调用。
  • 推荐:64位C/C++应用程序开发课程-viva64.com/en/l

标签: c windows programming-languages 32bit-64bit


【解决方案1】:

当您使用诸如 C 之类的编译语言时,指针的大小不取决于您运行代码的平台:它仅取决于您编译代码的平台。

Windows 7 64 位可以运行为 32 位平台编译的代码。从你程序的输出来看,你的代码似乎是为 Win-32 编译的。

在 Visual Studio 2010 中,转到 C/C++ 项目的属性页面,并确保在“平台”下拉列表中选择了 Active (x64)(默认为 Win32)。如果下拉列表中没有x64,请单击[Configuration Manager...],然后为您的项目平台选择x64。如果“复制自...”对话框打开,请单击 [OK] 将其关闭。重新编译后程序应在 64 位模式下运行。

【讨论】:

  • 我在同一台计算机上编译它,也许我必须包含一些编译器或链接器选项。你知道哪些选项可以编译为 64 位。我正在使用 Visual Studio 2010。谢谢
  • @user2340048 我编辑了答案以解释如何在 Visual Studio 中为 x64 编译。
  • @user2340048 太好了!如果问题现在已解决,请考虑通过单击旁边的灰色复选标记来接受答案。这会让其他人知道您不再积极寻找解决此问题的改进方案,并为您赢得堆栈溢出的新徽章。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-11
  • 2014-03-07
  • 2014-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多