как указать VC11 лямбда-соглашение о вызовах
Я хочу передать указатель лямбда-функции, вложенный в класс, в функцию обратного вызова Windows API. Я обнаружил, что мне некуда указывать__stdcall
ключевое слово. Некоторые люди сказали мне поддержку только компиляции__cdecl
, но после того, как я использовал команду nm для вывода файла obj, я обнаружил, что при компиляции будут созданы три вспомогательные функции (,,__stdcall
__cdecl
__fastcall
) одновременно. Итак, моя проблема, как я могу указать соглашение о вызовах?
Следующий код мой тестовый код.
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
auto func = [](){};
return 0;
}
00000000 t ?@@@CAXXZ
00000000 t ?@@@CIXXZ
00000000 t ?@@@CGXXZ
00000000 t ??B@@QBEP6AXXZXZ
00000000 t ??B@@QBEP6GXXZXZ
00000000 t ??B@@QBEP6IXXZXZ
00000000 t ??R@@QBEXXZ