Tôi mới sử dụng mã C++, đến từ nền Java và C#. Tôi đang bối rối bởi sự gia tăng của các điều khoản #define bắt đầu với cơ bản nhất:Tại sao có macro xác định _tmain?
#define _tmain wmain
Khi tôi lần đầu tiên học được một ít C từ lâu, chức năng chính là:
int main(int argc, char *argv[])
Trong Visual C++ dự án tôi tạo ra, nó làm cho các chức năng chính:
int _tmain(int argc, _TCHAR* argv[])
tôi chỉ tự hỏi tại sao lại có cần thiết để trở thành một dịch tên từ wmain
để _tmain
? Tại sao không chỉ sử dụng nguyên mẫu chức năng C main
gốc?
Nói chung có vẻ như rất nhiều #define đổi tên một cái gì đó trông khá rõ ràng để bắt đầu, với một cái gì đó trông bí ẩn hơn và ít rõ ràng hơn (tôi có nghĩa là wmain
đến _tmain
??).
Cảm ơn bạn đã chịu đựng những gì có thể là một câu hỏi rất rõ ràng.
Đó là nội dung cụ thể cho Windows, không có gì liên quan đến Chuẩn C++ (cũng không phải C). Họ (tại Microsoft) có thói quen xấu về các kế hoạch đặt tên khủng khiếp và làm phức tạp những thứ không cần thiết. –
Ngày xửa ngày xưa, ai đó nghĩ rằng đây là một ý tưởng hay để giúp mọi người di chuyển từ các phiên bản Windows cũ hơn bằng cách sử dụng char sang phiên bản mới hơn khi sử dụng wchar_t. Nó không phải là, và bây giờ nó chỉ gây nhầm lẫn cho mọi người! –
Liên quan: http://stackoverflow.com/questions/234365/is-tchar-still-relevant – dan04