2012-07-19 41 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