Вопрос

Я прочитал несколько статей о различных входах Windows C Points, Wmain и WinMain.

Итак, если я правильно, они добавляются к языковым компиляторам для ОС Windows. Но как реализуются?

Например, WMAIN получает Unicode AS ARGV [], но его ОС, которая отправляет эти аргументы программе, поэтому есть ли специальное поле в записи файла .exe, которая говорит к Windows, чтобы пройти аргументы как Unicode? Спасибо.

Это было полезно?

Решение

Современные версии Windows Internall используют UTF-16. Следовательно, когда вы запускаете исполняемый файл, все аргументы командной строки, скорее всего, передаются как UTF-16 из начала, а библиотека времени выполнения, связанная с запущенным приложением, либо передает аргументы через невредительную (при использовании wmain) или преобразует их в локальное кодирование автоматически (при использовании main). (Конкретно это будет сделано wmainCRTStartup/mainCRTStartup которые являются фактическими точками входа, используемые для приложений для консоли Windows.)

Другие советы

Во-первых: педантичный разговор: Wmain, безусловно, не получает аргументы Unicode. Unicode определяется независимо какого-либо конкретного кодирования. WMAIN получает аргументы в 16 битном символьном кодировке Unicode, UTF-16 на предположение. Я только что проверил документацию Microsoft на WMAIN И ссылки от нее и понятно, что Microsoft не имела никакой подсказки о том, какой Unicode, когда они его написали.

В любом случае, точка входа программы определяется линкером. Программа переменного тока всегда имеет определенное количество пролого-кода, которое работает до Main / Wmain / WinMain / Wwinmain. Если используется одна из широких версий основных, код пролога преобразует символы в среду из любого набора символов, в которых они находятся в широкой версии символов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top