關於PA64位化對應,現在主要從三個方面進行排查:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
1、用struct,union定義的變量,在引用其成員時,不是以
名標形式引用(例如struct_a.a 或 pstruct_a->a)而是以
相對地址進行參照(例如 *(struct_a+4)=1; ),這時,要
改爲以名標形式引用。
2、在使用數據類型的偏移量時,不是使用sizeof()
(例如:*(a+sizeof(long)*2) = 1;),而是直接使用數據類型
的大小(例如:*(a+4*2) = 1; ),這時,要改爲sizeof()。
但總的來說1、2、種類型的問題,排查時,都是搜索一行中是否
同時出現了“+-*/”運算子以及定數[0-9]。
3、有一些必須使用4Byte long型的地方,要注意此處是否會出錯,
包括:有位運算的地方:按位取反(~),左移(<<),右移(>>),
按位與(&),按位或(|),按位異或(^)。
具體,先查詢有無位運算:“~,<<,>>,&,|,^”
再查詢改行有無long定義的變量;
如果必須使用4Byte時,將此變量改爲int型。