【问题标题】:Using lambdas in c++11 visualstudio11 with winapi [duplicate]在带有winapi的c ++ 11 visualstudio11中使用lambdas [重复]
【发布时间】:2013-08-21 22:08:58
【问题描述】:

代替

CreateThread(NULL, NULL, function, NULL, NULL, NULL);

我有兴趣尝试

CreateThread(NULL, NULL, [](LPTHREAD_START_ROUTINE){ int x = 0; return x;}, NULL, NULL, NULL);

我收到错误:不存在从 lambda []int (LPTHREAD_START_ROUTINE)->int 到 LPTHREAD_START_ROUTINE 的合适转换函数。

【问题讨论】:

    标签: winapi c++11 lambda


    【解决方案1】:

    您的 lambda 函数上的签名不正确。它需要接受void* 并返回DWORD。试试下面的

    LPTHREAD_START_ROUTINE pStart = [](void* pValue) -> DWORD { int x = 0; return x; };
    ::CreateThread(NULL, NULL, pStart, NULL, NULL, NULL);
    

    注意:我相信这仅适用于 Visual Studio 2012 及更高版本。我不相信在那之前实现了 lambda 到函数指针的转换

    【讨论】:

      猜你喜欢
      • 2013-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-03
      • 2021-08-31
      • 1970-01-01
      • 2013-07-04
      • 2012-07-21
      相关资源
      最近更新 更多