类型值不能用于初始化类型实体
A value of type cannot be used to initialize an entity of type
我有一个函数:
long __stdcall call_DLL(long n, byte s0, byte s1, long(__stdcall *CallBack)(long m, byte s0, byte s1)){
//trying to copy the address of CallBack to another pointer
long *x = &CallBack;
}
我遇到了一个错误:
a value of type "long(__stdcall *CallBack)(long m, byte s0, byte
s1)"cannot be used to initialize an entity of type "long *"
有人知道我该怎么做?
如果您真的想保存回调以稍后使用,则可以:
long (* __stdcall x)(long, byte, byte) = CallBack;
或在C 中,您也可以将auto
用于简洁:
auto x = CallBack;
在任何一种情况下,以后都使用
long ret = x(n, s0, s1);
否则,如果您只想调用该回调,请执行
之类的事情long x = CallBack(n, s0, s1);
,而不是用不兼容的long *
初始化功能指针,而是用兼容类型初始化它。@algirdaspreidžius
指针函数(长,字节,字节(返回长。
long __stdcall call_DLL(long n, byte s0, byte s1,
long (__stdcall *CallBack)(long m, byte s0, byte s1)) {
// long *x = &CallBack;
long (__stdcall *x)(long, byte, byte) = CallBack;
// sample usage of `x`
return x(n, s0, s1);
}
相关文章:
- 不能将 "void *" 类型的值分配给类型 "TCHAR" 的实体
- 需要帮助在 c++ 中将字符串转换为字符 ----错误 "const char *" 类型的值不能用于初始化 "char" 类型的实体
- 无法将错误分配给成员函数中"类型的实体"
- "const wchar_t *" 类型的值不能用于初始化类型 "const PWSTR" 的实体
- Visual Studio C++:不能使用类型为 "const wchar_t *" 的值来初始化类型为 "TCHAR *" 的实体
- 不能将 "void *" 类型的值分配给类型 "RANDOMSTRUCT *" 的实体
- 回调方法显示错误,类型为"void(*)"的值不能用于初始化类型的实体
- 智能感知:不能使用 "PVOID" 类型的值初始化 "_NtQuerySystemInformation" 类型的实体
- 不能将 "const char*" 类型的值分配给类型 "int" 的实体
- 类型值不能用于初始化类型实体
- 不能将 "const char *" 类型的值分配给类型为 "LPSTR" 的实体
- c 11申请人(e)是e命名的实体的类型
- 错误:无法将 "double*" 类型的值分配给类型 "double" 的实体
- 智能感知:不能将 "void" 类型的值分配给类型 "double" 的实体
- 值类型 const char 不能用于初始化 char* 类型的实体
- ECS实体可以有多个给定类型的组件
- "char *" 类型的值不能用于初始化类型 "char" 的实体
- "const wchar_t *" 类型的值不能用于初始化类型为 "LPCSTR" 的实体
- 如何确定Tcl_Obj是否是某种类型的 ttk:: 实体,例如 ttk:entry
- 标识派生类类型的正确方法(类型实体VS dynamic_case)