我正在使用-Wbad-function-cast
标志在gcc上编译程序。 gcc显示以下警告:
cast does not match function type
这是警告线:int ret = (int)
FindExecutable(file, NULL, result)
问题是:它可以删除吗?可能会转换为另一种Windows数据类型,但我将其作为整数处理。
答案 0 :(得分:2)
你看过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;
答案 1 :(得分:0)
根据FindExecutable documentaction,该函数返回一个HINSTANCE
类型的值,但也返回值小于或等于32的整数以指示错误。在64位Windows系统上将结果转换为int
会触发编译器警告。为了避免这种情况并仍然检查错误值,可以将其值强制转换为unsigned long long
。