2012-07-19 86 views
0

我正在使用-Wbad-function-cast標誌編譯gcc上的程序。海合會顯示以下警告:如何將壞的HINSTANCE轉換爲int?

cast does not match function type

這是警告的線:int ret = (int)FindExecutable(file, NULL, result)

的問題是:有可能將其刪除?也許投射到另一個Windows數據類型,但我把它作爲一個整數處理。任何幫助非常感謝。提前致謝。

+0

爲什麼你需要投它呢?寫這樣的代碼:'HINSTANCE ret = FindExecutable(...);'或者甚至'auto ret = FindExecutable(...);' – 2012-07-20 12:57:12

回答

1

你看過什麼HINSTANCE實際上是? (我猜它是一個指針,而不是一個int)。所以,你可能有更好的運氣鑄造一個void *

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

手柄可實例。這是模塊在內存中的基地址。今天HMODULE和HINSTANCE是一樣的,但在16位Windows中代表了不同的東西。 此類型在WinDef.h中聲明如下: typedef HANDLE HINSTANCE;

手柄
對象的句柄。 這種類型在WinNT.h中聲明如下: typedef PVOID HANDLE;

指向任何類型的指針。 這種類型在WinNT.h中聲明如下: typedef void * PVOID;

+0

@Jack,所以你可以(也可能應該)刪除這個cast並且讓ret一個void *。 – 2012-07-19 18:14:11