我正在使用-Wbad-function-cast
标志在 gcc 上编译一个程序。gcc 显示以下警告:
cast does not match function type
这是警告行: int ret = (int)
FindExecutable(file, NULL, result)
问题是:有可能删除它吗?也许转换为另一种 Windows 数据类型,但我将其作为整数处理。
我正在使用-Wbad-function-cast
标志在 gcc 上编译一个程序。gcc 显示以下警告:
cast does not match function type
这是警告行: int ret = (int)
FindExecutable(file, NULL, result)
问题是:有可能删除它吗?也许转换为另一种 Windows 数据类型,但我将其作为整数处理。
你有没有看过 HINSTANCE 实际上是什么?(我猜它是一个指针,而不是一个 int)。所以你可能会有更好的运气铸造到一个虚空*
http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx
实例的句柄。这是内存中模块的基地址。HMODULE 和 HINSTANCE 在今天是相同的,但在 16 位 Windows 中表示不同的东西。这种类型在 WinDef.h 中声明如下: typedef HANDLE HINSTANCE;
HANDLE
对象的句柄。这种类型在 WinNT.h 中声明如下: typedef PVOID HANDLE;
指向任何类型的指针。此类型在 WinNT.h 中声明如下: typedef void *PVOID;
根据FindExecutable 文档操作,该函数返回一个HINSTANCE
类型值,但也返回值小于或等于 32 的整数以指示错误。将结果投射到int
64 位 Windows 系统上会触发编译器警告。为了避免它并仍然检查错误值,您可以将其值转换为unsigned long long
.