编译 SkyFireEMU 错误,sizeof(void *) 两者都不是



我正在尝试使用Visual Studio 2010(32位)编译SkyFireEMU (https://github.com/ProjectSkyfire/SkyFireEMU),但是我收到一个错误(在"worldserver"的几乎所有文件上):

fatal error C1189: #error :  sizeof(void *) is neither sizeof(int) nor sizeof(long) nor sizeof(long long)

这让我重新回到了代码的平静:

#if SIZEOF_CHARP == SIZEOF_INT
typedef int intptr;
#elif SIZEOF_CHARP == SIZEOF_LONG
typedef long intptr;
#elif SIZEOF_CHARP == SIZEOF_LONG_LONG
typedef long long intptr;
#else
#error sizeof(void *) is neither sizeof(int) nor sizeof(long) nor sizeof(long long)
#endif

有人可以帮助我解决这个问题吗?错误是什么意思?我真的不知道出了什么问题。

代码很旧。今天您可以使用typedef intptr_t intptr(又名std::intptr_t <cstdint>)。

SIZEOF_CHARP没有

正确设置(根据编写该代码的人),因此调用了错误消息。您最好的选择是查阅 SkyFireEMU 文档,您可能需要在编译之前设置此标志,或者类似的东西。

话虽如此,我做了一个快速的谷歌并找到了这个,它描述了一个相同的错误消息。它建议在您提供的块之前编写以下内容:

#ifndef SIZEOF_CHARP
#define SIZEOF_CHARP SIZEOF_LONG
#endif

但是,可能仍然存在一个潜在的问题,因为这实际上只是抑制了错误。

相关内容

  • 没有找到相关文章

最新更新