Использование 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 см. в разделе Интернационализация.
Завершение блока, относящегося только к системам Майкрософт
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по