2012-04-13 52 views
0

我想用Visual Studio 2010(32位)編譯SkyFireEMU(https://github.com/ProjectSkyfire/SkyFireEMU),但我得到一個錯誤(幾乎在「WorldServer的」)中的所有文件:編譯SkyFireEMU錯誤,sizeof(void *)既不是

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

這rederects我這個和平的代碼:

#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 

有人可以幫我解決這個問題?錯誤是什麼意思?我真的不知道出了什麼問題。

回答

2

代碼是舊的。今天,您可以使用typedef intptr_t intptr(又名std::intptr_t,在<cstdint>)。

1

SIZEOF_CHARP未被正確設置(根據編寫該代碼的人),因此調用錯誤消息。你最好的選擇是參考SkyFireEMU的文檔,你可能需要在編譯之前設置這個標誌,或者沿着這些方向。

說了這話之後,我做了一個快速Google,發現this,它描述了一個相同的錯誤信息。它建議您提供的塊之前編寫以下權利:

#ifndef SIZEOF_CHARP 
#define SIZEOF_CHARP SIZEOF_LONG 
#endif 

仍有可能是一個潛在的問題,雖然,因爲這真的只是抑制了錯誤。