編譯32位時出現此錯誤。同樣的文件,沒有錯誤的64位編譯的Windows無法將參數5從'SIZE_T *'轉換爲'size_t *' - 爲什麼?
1> C:\項目\ TEST.CPP(1317):錯誤C2664: 'StringCbCopyExW':不能轉換參數,從5 'SIZE_T *' 到' size_t *'
SIZE_T和size_t都有相同的大小和符號,所以有什麼區別?爲什麼我需要在這裏演員?如果類型不同,爲什麼只在32位Windows上出錯?
編譯32位時出現此錯誤。同樣的文件,沒有錯誤的64位編譯的Windows無法將參數5從'SIZE_T *'轉換爲'size_t *' - 爲什麼?
1> C:\項目\ TEST.CPP(1317):錯誤C2664: 'StringCbCopyExW':不能轉換參數,從5 'SIZE_T *' 到' size_t *'
SIZE_T和size_t都有相同的大小和符號,所以有什麼區別?爲什麼我需要在這裏演員?如果類型不同,爲什麼只在32位Windows上出錯?
什麼SIZE_T定義爲?
它可能被定義爲 「無符號整型」,或uint32_t的用於向後comaptibility
'的typedef ULONG_PTR SIZE_T,* PSIZE_T;' – John 2011-03-07 04:22:25
SIZE_T
是從std::size_t
不同。第一種是Windows頭文件中的#define
類型,第二種是由C++編譯器定義的類型。他們是不同的類型。
至少在我的系統上,SIZE_T
是ULONG_PTR
一個typedef
,這是一個unsigned long
#define
。
對於64位是'的typedef無符號__int64 ULONG_PTR,* PULONG_PTR;'爲32位是'的typedef _W64無符號長ULONG_PTR,* PULONG_PTR;'。無論哪種情況,這些應該是相同整數類型的別名。 – John 2011-03-07 04:20:23
你能不能爲的size_t和SIZE_T在32位的Windows做的sizeof? – Michas 2011-03-07 03:00:08