1
変換しようとしている次のマクロがあります。C++でマクロを使用するために、C++でマクロを定義または変換する方法
#define FIELD_OFFSET(type, field) ((LONG)&(((type *)0)->field))
#define IMAGE_FIRST_SECTION(ntheader) ((PIMAGE_SECTION_HEADER) ((DWORD)ntheader + \
FIELD_OFFSET(IMAGE_NT_HEADERS, OptionalHeader) + \
((PIMAGE_NT_HEADERS)(ntheader))->FileHeader.SizeOfOptionalHeader))
私はC++で非常にグリーンです。誰かが私に手を差し伸べることができますか?
ありがとうございます!
これは、あたかも関数であるかのように文字通り翻訳されたときには機能しません。さらに、目標は明らかにポインタ演算によるメモリアドレスを取得することです。IIRCはこれを行うC言語の方法ではありません。マクロの使用法を理解し、マクロを使用してコードを書き直すことで、OPがうまくいくかもしれません。 –
ありがとうございました! :)私はこれらのマクロでかなり読んできましたが、私が持っているものは私を投げています。私はPEDumpまたはDumpBinのC#バージョンを見つけようとしています。 DLL内にあります。 –
GetFieldの翻訳が間違っています。マクロは、固定バイトオフセットを返すために使用されます。 'field'はMARCOの引数で、' IMAGE_FIRST_SECTION'マクロの場合、FIELD_OFFSETマクロの使用法を '(long)(sizeof DWORD)+ sizeof(IMAGE_FILE_HEADER)) ' – Manfre