実験中ですが、このコードを(コンパイルのように)機能させることができるかどうか疑問に思っていました:
void main() {
int number = 5;
DWORD(*dontThreadOnMe)(PVOID) = [](PVOID data) {
int value = *(int*) data;
cout << value << endl;
cout << "This callback executed successsfully" << endl;
};
CreateThread(NULL, NULL, dontThreadOnMe, &number, NULL, NULL);
cin.get();
}
LPTHREAD_START_ROUTINE
コールバックの標準的な署名は であるため、追加された (ただし文法的には違法な)タグDWORD WINAPI Callback(PVOID)
なしではこれをコンパイルすることができないのではないかと、私はしつこく疑っています。WINAPI
そういえば、WINAPI
and CALLBACK
(たとえばWndProc
) 属性とは正確には何ですか? 特定の状況で関数に複数の属性を持たせることができる理由を本当に理解したことがありません。