[問題] 可否強制部分指標寬度=4 在 X64 編譯目標
開發平台(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
09/29 23:03, 1F
→
09/30 07:35, , 2F
09/30 07:35, 2F
→
09/30 07:35, , 3F
09/30 07:35, 3F