演示如何使用MFC创建线程的示例代码将线程函数声明为static和__cdecl
。为什么需要后者?提升线程不会打扰这个约定,那么它只是一个时代错误?为什么线程函数需要声明为'__cdecl'?
例如(MFC):
static __cdecl UINT MyFunc(LPVOID pParam)
{
...
}
CWinThread* pThread = AfxBeginThread(MyFunc, ...);
而提升:
static void func()
{
...
}
boost::thread t;
t.create(&func);
(因为我无处一个IDE附近的代码样本可能不是100%正确的)。
__cdecl有什么意义?创建线程时它有什么帮助?
Boost不考虑调用约定。这不是语言级别的功能(更多是链接器级别功能)。 MS使用它来代码的向后兼容性。 – 2008-10-04 18:43:34
Loki有最佳答案 – SChalice 2015-11-24 00:08:45