今天在vs2015下編譯C++程序時出現
warning C4267: “return”: 從“size_t”轉換到“unsigned int”,可能丟失數據
產生的原因:
編譯器檢測64位可移植性時沒有通過造成的
size_t類型,在頭文件stddef.h中定義。這是一個依賴於編譯系統的值,一般定義為typedef unsigned int size_t;
由於平台的原因造成的,在64位的環境下size_t的長度和int不一致造成的
在64位機器上
sizeof(size_t) = 8
sizeof(unsigned int) = 4
比較粗暴地解決方式