我試圖創建一個地圖使用__stdcall函數名和函數指針的。這裏是我目前得到我的函數指針:創建地圖__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形跡可疑給我,但如果我不加它,然後它抱怨需要指定一個類型。
而且回調是__stdcall#定義,如果這是令人困惑的。
http://stackoverflow.com/questions/8304582/how-to-store-functional-objects-with-difrent-signature-in-a-container-eg-std#8304694 –
'__stdcall'不再是一個類型比'const'更重要。他們只是一種類型的修飾符。 –