vs2005 warning C4267: 'initializing' : conversion from 'size_t' to 'int', possible loss of data

查MSDN得:   
size_t unsigned integer    Result of sizeof operator. STDDEF.H and other include files  

出現C4276 warning是因爲測試 32位代碼的64位兼容性問題而出現的警告,由/WP64開關控制,默認是打開的。

size_t 是針對系統定製的一種數據類型,一般是整形,因爲C/C++標準只定義一最低的位數,而不是必需的固定位數。而且在內存裏,對數的高位對齊存儲還是低位對齊存儲各系統都不一樣。爲了提高代碼的可移植性,就有定議le 這樣的數據類型。

size_t 在32位系統上定義爲 unsigned int,在64位系統上定義爲 unsigned long.

STDDEF.H的內容
#ifndef   _SIZE_T_DEFINED  
#ifdef     _WIN64  
typedef   unsigned   __int64         size_t;  
#else  
typedef   _W64   unsigned   int       size_t;  
#endif  
#define   _SIZE_T_DEFINED  
#endif 


解決方法:(注:本人的是vs2005)

Project ->Properties ->C/C++ ->General-> Detect 64bit Portability Issues,設置成否

發佈了518 篇原創文章 · 獲贊 98 · 訪問量 182萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章