0

我正在尝试使用 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

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

4

2 回答 2

2

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

于 2012-04-13T15:13:07.030 回答
1

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

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

#ifndef SIZEOF_CHARP
#define SIZEOF_CHARP SIZEOF_LONG
#endif

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

于 2012-04-13T14:55:04.220 回答