Mã mẫu cho biết cách tạo chủ đề bằng cách sử dụng MFC khai báo hàm chuỗi làm cả tĩnh và __cdecl
. Tại sao yêu cầu thứ hai? Chủ đề Boost không làm phiền với quy ước này, vậy nó chỉ là một lỗi thời?Tại sao các hàm chuỗi cần được khai báo là '__cdecl'?
Ví dụ (MFC):
static __cdecl UINT MyFunc(LPVOID pParam)
{
...
}
CWinThread* pThread = AfxBeginThread(MyFunc, ...);
Trong khi Boost:
static void func()
{
...
}
boost::thread t;
t.create(&func);
(các mẫu mã có thể không chính xác 100% như tôi hư không gần một IDE).
Điểm của __cdecl là gì? Làm thế nào để nó giúp đỡ khi tạo chủ đề?
Tăng cường không xem xét gọi quy ước. Đây không phải là tính năng cấp độ ngôn ngữ (nhiều tính năng của Trình liên kết). MS sử dụng nó để tương thích ngược với mã. –
Loki có câu trả lời tốt nhất – SChalice