Tmain () чому така назва stack overflow російською

Для не-Unicode-програм використовується відповідне стандарту ім'я main та список параметрів int argc, char * argv [].

Для Unicode-програм список параметрів в MSVC виглядає як int argc, wchar_t * argv []. і щоб уникнути конфліктів з кодами і компіляторами, що відповідають стандарту, функція називається wmain.

Для програм, які можуть компілюватися і в Unicode-, і в не-Unicode-режимі, список аргументів виглядає як int argc, _TCHAR * argv []. де макрос _TCHAR визначений як char або wchar_t в залежності від значення макросу _UNICODE. Таким чином, потрібно третє ім'я для функції. Так і було придумано ім'я _tmain.

Все це, звичайно, вимагає певної магії компоновщика, який повинен вміти визначити entry point не тільки у функції main. як по стандарту, а й у функціях wmain / _tmain.

Якщо ви впевнені, що вам не потрібно Unicode-додаток, ви можете перейменувати функцію в main і дати їй список аргументів int argc, char * argv []. щоб відповідати стандарту. Або якщо ви твердо вирішили, що ваша програма буде запускатися лише під лінійкою WinNT / XP / 7 (а не Win95 / 98), ви можете зупинитися на Unicode-варіанті і перейменувати функцію в wmain (відповідно, аргументи повинні бути int argc, wchar_t * argv []).

Запізніле уточнення (спасибі @alexolut): Згідно з документацією. _tmain визначається в за допомогою typedef як main або wmain. так що у вашій програмі все одно буде або main. або wmain.

(І так, ви можете опустити параметри, або додати третій параметр envp. Або задекларувати повертається тип void.)

Схожі статті