我正在使用-Wbad-function-cast
标志编译gcc上的程序。海合会显示以下警告:如何将坏的HINSTANCE转换为int?
cast does not match function type
这是警告的线:int ret = (int)
FindExecutable(file, NULL, result)
的问题是:有可能将其删除?也许投射到另一个Windows数据类型,但我把它作为一个整数处理。任何帮助非常感谢。提前致谢。
我正在使用-Wbad-function-cast
标志编译gcc上的程序。海合会显示以下警告:如何将坏的HINSTANCE转换为int?
cast does not match function type
这是警告的线:int ret = (int)
FindExecutable(file, NULL, result)
的问题是:有可能将其删除?也许投射到另一个Windows数据类型,但我把它作为一个整数处理。任何帮助非常感谢。提前致谢。
你看过什么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;
@Jack,所以你可以(也可能应该)删除这个cast并且让ret一个void *。 – 2012-07-19 18:14:11
为什么你需要投它呢?写这样的代码:'HINSTANCE ret = FindExecutable(...);'或者甚至'auto ret = FindExecutable(...);' – 2012-07-20 12:57:12