0

我正在使用-Wbad-function-cast标志在 gcc 上编译一个程序。gcc 显示以下警告:

cast does not match function type

这是警告行: int ret = (int)FindExecutable(file, NULL, result)

问题是:有可能删除它吗?也许转换为另一种 Windows 数据类型,但我将其作为整数处理。

4

2 回答 2

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;

于 2012-07-19T18:10:50.063 回答
2

根据FindExecutable 文档操作,该函数返回一个HINSTANCE类型值,但也返回值小于或等于 32 的整数以指示错误。将结果投射到int64 位 Windows 系统上会触发编译器警告。为了避免它并仍然检查错误值,您可以将其值转换为unsigned long long.

于 2020-07-12T08:27:35.590 回答