c++ - 创建 __stdcall 的映射

标签 c++ types function-pointers stdcall

我正在尝试使用 __stdcall 创建函数名称和函数指针的映射。这是我目前获取函数指针的方式:

typedef int (CALLBACK* InitializeDLL)(int,int);
InitializeDLL initializeDLL = (InitializeDLL)GetProcAddress(hInstanceLibrary, "InitializeDLL");

现在我的 map :

map<string, int *__stdcall> mapInt;
mapInt["InitializeDLL"] = initializeDLL; //throws error for "InitializeDLL cannot be assigned to entity of type int*"

那个错误正是我所期望的,但我需要在 __stdcall 前面添加一个类型。如果我删除前面的“int”然后它会提示:

Error: expected a type specifier

如果我在仅创建前面包含“int”的 map 对象后尝试编译它,它会抛出错误:

error C2059: syntax error : '>'

这对我来说意义不大。那么使用 __stdcall 作为 map 类型的正确方法是什么?在它前面添加 int 对我来说似乎很可疑,但如果我不添加它,它就会提示它需要指定的类型。

此外,CALLBACK 是 __stdcall 的#define,如果这令人困惑的话。

最佳答案

你像使用类型一样使用 __stdcall,但它不是一个。您需要在映射定义中使用您的函数指针类型。

map<string, InitializeDLL> mapInt;

我不确定您为什么首先尝试做其他事情,因为您已经在其他地方使用过这种类型,难道不应该很明显这里也需要它吗?

关于c++ - 创建 __stdcall 的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11124367/

相关文章:

c++ - 是否有编译器警告会在函数返回后捕获代码?

c++ - 函数返回看似随机的数字,而不是返回变量的值

c - x86-64 处理器的数据类型

将函数传递给 remove_if 时出现 C++ 编译错误

c - C中结构内的函数指针

C++ 函数指针和预设参数

c++ - 如何在 OpenGL/GLSL 中对特定颜色进行阈值处理

c++ - 如何从 C++ 中的结构数组中删除一个项目?

scala - Scala 中的奇怪输入错误

object - 如何获取 Julia 对象的字段