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));

參考網址
arrow
arrow
    全站熱搜

    JohnDX 發表在 痞客邦 留言(0) 人氣()