Использование wmain

Блок, относящийся только к системам Microsoft

В модели программирования Юникода можно определить версию функции с расширенными main символами. Используйте wmain вместо , main если вы хотите написать переносимый код, соответствующий модели программирования Юникода.

Как и main, к функции применяются некоторые wmain ограничения, которые не применяются к другим функциям C. Функция wmain:

  • Не может быть объявлен как inline.
  • Не может быть объявлен как static.
  • Не может быть принято его адрес.
  • Не удается вызвать из программы.

Сигнатура wmain функции

Функция wmain не имеет объявления, так как она встроена в язык. Если это так, синтаксис объявления для wmain будет выглядеть следующим образом:

int wmain( void );
int wmain( int argc, wchar_t *argv[ ] );
int wmain( int argc, wchar_t *argv[ ], wchar_t *envp[ ] );

Функция wmain объявляется неявно с помощью одной из этих сигнатур. При определении wmain функции можно использовать любую из этих сигнатур. Затем можно передать в качестве аргументов "широкие" символы и указатель среды кодировки Юникод (необязательно) в программу. Компилятор Майкрософт также позволяет wmain использовать тип возвращаемого void значения, если значение не возвращается. Параметры argv и envp для wmain можно также определить как тип wchar_t**. Дополнительные сведения о аргументах см. в разделе Описание аргумента.

Среда envp

Если в программе используется main функция, многобайтовая среда создается библиотекой времени выполнения при запуске программы. Копия среды для Юникода создается только при необходимости (например, для вызова функции _wgetenv или _wputenv). При первом вызове _wputenv или _wgetenv, если среда многобайтовой кодировки (MBCS) уже существует, создается соответствующая среда широкосимвольной строки, на которую затем указывает глобальная переменная _wenviron, представляющая собой широкосимвольную версию глобальной переменной _environ. В этот момент две копии среды (для многобайтовой кодировки и Юникода) существуют одновременно и поддерживаются операционной системой в течение всего срока жизни программы.

Аналогичным образом, если программа использует функцию wmain , при запуске программы создается среда расширенных символов, на которую указывает глобальная _wenviron переменная. Среда многобайтовой кодировки MBCS (ASCII) создается при первом вызове функции _putenv или getenv, и на нее указывает глобальная переменная _environ.

Дополнительные сведения о среде MBCS см. в разделе Интернационализация.

Завершение блока, относящегося только к системам Майкрософт

См. также

Функция main и выполнение программ