【发布时间】:2012-06-22 20:58:00
【问题描述】:
我正在尝试使用 __stdcall 创建函数名称和函数指针的映射。以下是我目前获取函数指针的方式:
typedef int (CALLBACK* InitializeDLL)(int,int);
InitializeDLL initializeDLL = (InitializeDLL)GetProcAddress(hInstanceLibrary, "InitializeDLL");
现在是我的地图:
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”的地图对象创建后尝试编译它,则会引发错误:
error C2059: syntax error : '>'
这对我来说没有多大意义。那么使用 __stdcall 作为地图类型的正确方法是什么?在它前面添加 int 对我来说似乎很可疑,但如果我不添加它,它就会抱怨它需要指定类型。
此外,CALLBACK 是 __stdcall 的#define,如果这令人困惑的话。
【问题讨论】:
-
__stdcall不比const更多。它们只是一种类型的修饰符。
标签: c++ types function-pointers stdcall