0

-Wbad-function-castフラグを使用してgccでプログラムをコンパイルしています。gccは次の警告を表示します。

cast does not match function type

これは警告の行です: int ret = (int)FindExecutable(file, NULL, result)

問題は、それを削除することは可能ですか?別のWindowsデータ型にキャストしているかもしれませんが、私はそれを整数として処理しています。

4

2 に答える 2

2

HINSTANCEが実際に何であるかを見たことがありますか?(私はそのポインタを推測していますが、intではありません)。ですから、おそらくあなたはボイドにキャストするほうが幸運になるでしょう*

http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx

インスタンスへのハンドル。これは、メモリ内のモジュールのベースアドレスです。HMODULEとHINSTANCEは今日同じですが、16ビットWindowsでは異なるものを表しています。このタイプは、WinDef.hで次のように宣言されています。typedefHANDLE HINSTANCE;

HANDLE
オブジェクトへのハンドル。このタイプは、WinNT.hで次のように宣言されています。typedefPVOID HANDLE;

任意のタイプへのポインタ。このタイプは、WinNT.hで次のように宣言されています。typedefvoid * PVOID;

于 2012-07-19T18:10:50.063 に答える
2

FindExecutable documentactionによると、関数は型の値を返しますが、HINSTANCEエラーを示すために32以下の値の整数も返します。int結果を64ビットWindowsシステムにキャストすると、コンパイラの警告がトリガーされます。それを回避し、エラー値をチェックするために、その値をにキャストできますunsigned long long

于 2020-07-12T08:27:35.590 に答える