rsk*_*k82 6 c++ lambda winapi c++11
我有一个简单的窗口应用程序,声明了主窗口回调过程:
WNDCLASSEXW wcx;
/* ... */
wcx.lpfnWndProc = MainWndProc;
Run Code Online (Sandbox Code Playgroud)
而之后WinMain,我宣布LRESULT CALLBACK MainWndProc(HWND mainWindow, UINT msg, WPARAM wparam, LPARAM lparam) { /* ... */},所有好的工作,但我不知道是否有可能有这个MainWndProc作为一个lambda 里面的WinMain?
你可以使用lambda,只要它没有捕获,然后它有一个隐式转换为函数指针:
#include <iostream>
typedef void (*func)();
static func some_func;
int global;
int main() {
some_func = [](){ std::cout << "Hello\n"; }; // Fine
some_func();
int local;
some_func = [&](){ local = 1; }; // Illegal - No conversion
some_func = [](){ global = 1; }; // Fine
}
Run Code Online (Sandbox Code Playgroud)
问题实际上是你可以在lambda中作为没有捕获的回调有多少.您仍然可以使用"全局变量",就像使用常规函数作为回调一样.
| 归档时间: |
|
| 查看次数: |
1733 次 |
| 最近记录: |