2009-02-20 52 views
0

我想了解一個需要包含頭文件的SDK。有在頭文件,上面寫着編譯器錯誤C2632:類型1,然後是類型2是非法的

typedef long long SomeIdentifier_SInt64; 

typedef unsigned long SomeIdentifier_UInt64; 

編譯器(MSVC++ 6)兩個語句是抱怨,這是非法的。如果是這樣,這是否意味着SDK已損壞?我嚴重懷疑這是事實。這在其他編譯器中是否合法?有沒有辦法解決?

謝謝。

我的環境是MS Windows XP Pro 32位。

回答

1

VC6太老,太破碎了,不知道「漫長」。它會編譯__int64。 VS200x沒有問題。

+0

不幸的是,我不能替代我在工作中使用的軟件。我可以將頭文件中的long long替換爲__int64嗎?這被認爲是可接受的做法? – krebstar 2009-02-20 04:02:46

+0

取決於您對「可接受」的定義。大多數人不認爲VC6是可以接受的,但是如果用__int64作品替代很長的話,那麼它就像它將要獲得的那樣是可以接受的。 但是,一旦VC6實際上或多或少是正確的。 long long不是一個有效的C++類型。它存在於C中,而不是(在C++中) – jalf 2009-02-20 04:17:17

+0

__int64 * should *可以工作。在x86上,long long是一個64位整數。 __int64簡直就是微軟對該數據類型的不可移植名稱。 – jalf 2009-02-20 04:23:26

0

MSVC6是一個相當古老和蹩腳的編譯器。他們的最新版本要好得多(好得多),你可以在their website上免費下載它。

它沒有支持__int64unsigned __int64雖然如此,如果由於某種原因,你不能用你可以通過SDK頭搜索最新版本,並取代long long每個實例找到。

相關問題