Il motivo è un altro, ben più storico e che riguarda UNICODE.Originariamente inviato da ramy89
Comunque _tmain non è c++ standard, è fatto dalla Microsoft e ho il serio sospetto che l' unico motivo sia quello di rendere i programmi non portabili su altre piattaforme.
La serie Win9x si basava su stringhe ANSI, le versioni NT in poi su UNICODE.
Per evitare che un programmatore impazzisse a cambiare le chiamate API, in modo da adattarle alle varie stringhe, Microsoft ha creato un sistema di macro per astrarre le varie funzioni.
Giusto per fare un esempio, CreateWindow è definita così:
e così tutte le funzioni API che prendono stringhe.codice:#ifdef UNICODE #define CreateWindowEx CreateWindowExW #else #define CreateWindowEx CreateWindowExA #endif // !UNICODE
Per la libc è leggermente diverso:
codice:#ifdef _UNICODE #define char TCHAR #define strcpy _tcscpy #else #define wchar_t TCHAR #define wcscpy _tcscpy #endif // !_UNICODE