我想在我的C++項目中使用第三方c庫,這是我在Windows 64位上使用Visual Studio開發的。 32位和64位都編譯成功;鑄造8位長指針
double* foo(){
double* b; long a; long i;
/*
... do some stuff to assign values to b, a, i ...
*/
return ((long)b + a + i);
}
的問題是(在Windows上至少)該雙*是由4個字節在x86體系結構表示和8:然而,我在64位上運行時,因爲它下面的發現在外部庫中的一個問題字節x64,所以在返回語句中鑄造b
被擰緊。
我的問題是,有沒有一種方法可以從8位表示中「提取」指針b
的4個字節的地址,以保持表達式(b+a)
有意義?
感謝
請了解位和字節之間的差異,這對有效交流思想非常重要。指針是四個或八個字節,而不是位。 –
我可能會錯過顯而易見的東西,但會簡單地從返回線中移除(長)不能解決問題? – MTilsted
有問題的代碼沒有意義。目前尚不清楚它的設計目標是什麼,因此很難說出什麼是合適的解決方案。如果這是你的代碼,我的建議是避免任何和所有的演員。 –