close
VS2005 與 VC6 在建置 C/C++ 專案時
編譯出來的 binary 會不盡相同
因為某些 data type 所定義的大小不一樣!
所以不管是在 porting 程式還是資料互傳時都要特別小心!
出問題要找出來可不是這麼容易的= =
不同的 data type 像是:time_t and wchar_t
time_t ---- VS2005 8 byte
time_t ---- VC6 4 byte
wchar_t ---- VS2005 treats wchar_t as a built-in type
wchar_t ---- VC6 typedef synonymous with unsigned short.
參考網址
另外還有在跨平台時 C struct 的 member alignment 也要注意
像是 arm 平台只接受偶數 byte 位址運算
以下的程式就有可能出錯
例:
short int a;
a = *b;
如果 *b 佔奇數 byte 就會有問題
要將 a = *b; 改成 memcpy(&a, b, sizeof(short int));
參考網址
全站熱搜