演示如何使用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