我在 Windows 7 上使用 MinGW GCC 编译器。我正在尝试编译包含以下代码的源代码:
MEMORYSTATUSEX mem_stat;
mem_stat.dwLength = sizeof(memstat);
BOOL success = GlobalMemoryStatusEx(mem_stat);
ram_ptr = &(mem_stat->ullAvailPhys);
我相信您可以猜到,这段代码只是使用 GlobalMemoryStatusEx 返回的 MEMORYSTATUSEX 结构获取可用内存。
当我尝试编译时,我收到此错误:
error: unknown type name 'MEMORYSTATUSEX'
我查看了 winbase.h(在 MinGW 安装包含文件夹中),猜猜我发现了什么?
#if (_WIN32_WINNT >= 0x0500)
typedef struct _MEMORYSTATUSEX {
DWORD dwLength;
DWORD dwMemoryLoad;
DWORDLONG ullTotalPhys;
DWORDLONG ullAvailPhys;
DWORDLONG ullTotalPageFile;
DWORDLONG ullAvailPageFile;
DWORDLONG ullTotalVirtual;
DWORDLONG ullAvailVirtual;
DWORDLONG ullAvailExtendedVirtual;
} MEMORYSTATUSEX,*LPMEMORYSTATUSEX;
#endif
所以它就在那里。我猜这与预编译器if / endif有关,但我不知道如何解决这个问题......
更奇怪的是,如果我改用 MEMORYSTATUS 结构,它可以正常工作。
根据 MS 文档,两者都具有相同的最低客户端版本要求:
MEMORYSTATUSEX:http: //msdn.microsoft.com/en-us/library/windows/desktop/aa366589%28v=vs.85%29.aspx
内存状态:http : //msdn.microsoft.com/en-us/library/windows/desktop/aa366772%28v=vs.85%29.aspx
我需要设置一些编译器标志吗?或者有人有其他解决方案吗?
在此先感谢您的帮助!