[問題] 可否強制部分指標寬度=4 在 X64 編譯目標

看板C_and_CPP作者 (克里斯)時間13年前 (2012/09/29 09:54), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串1/1
開發平台(Platform):MSVC x64 / UEFI64 platform 額外使用到的函數庫(Library Used):沒有 問題(Question): 有一個結構體(PCH_SATA_CONTROL)是被一隻x86的程式放到記憶體中, 現今需要一隻x64的程式解析其內容,這個結構體已經可以被找到, 問題是結構體的指標成員大小會因為不同編譯目標而變(4or8), 是不是存在一個手法使指標成員大小為4在x64編譯目標(以不改結構體宣告前提之下)。 餵入的資料(Input):不需要 預期的正確結果(Expected Output):如註解所示 錯誤結果(Wrong Output):沒有 程式碼(Code):(請善用置底文網頁, 記得排版) #include <iostream> typedef enum { PchSataModeIde = 0, PchSataModeAhci = 1, PchSataModeRaid = 2, PchSataModeLoopbackTest = 3, PchSataModeMax } PCH_SATA_MODE; typedef enum { PchDirectConnect, PchCableUp } PCH_SATA_TOPOLOGY; typedef struct { PCH_SATA_TOPOLOGY PortTopology[2]; } PCH_SATA_TRACE_CONFIG; typedef struct { PCH_SATA_MODE SataMode; PCH_SATA_TRACE_CONFIG *SataTraceConfig; } PCH_SATA_CONTROL; int main(int argc, char *argv[]) { // // Let "sizeof(PSC) = 8" on x64 build target. // std::cout << "sizeof(PSC) = " << sizeof(PCH_SATA_CONTROL) << std::endl; getchar(); return EXIT_SUCCESS; } 補充說明(Supplement):沒有 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.195.88.82 ※ 編輯: chrisdar 來自: 123.195.88.82 (09/29 09:54) ※ 編輯: chrisdar 來自: 123.195.88.82 (09/29 09:56) ※ 編輯: chrisdar 來自: 123.195.88.82 (09/29 10:00)

09/29 23:03, , 1F
如果不改宣告的話,如何得知哪部分指標要用寬度4編譯?
09/29 23:03, 1F

09/30 07:35, , 2F
看起來真的只能改宣告 指標都用UINT32取代 要用的時候
09/30 07:35, 2F

09/30 07:35, , 3F
再轉回來
09/30 07:35, 3F
文章代碼(AID): #1GPbJ04K (C_and_CPP)