Frage

Ich habe einige Artikel gelesen über die verschiedenen Windows-C Eintrag pooints, wmain und WinMain.

Also, wenn ich richtig bin, werden diese hinzugefügt, um die Sprache C-Compiler für Windows-Betriebssystem. Aber, wie umgesetzt werden?

Zum Beispiel wmain erhält Unicode als argv [], aber seine Os, die diese Argumente Programm sendet, so ist es eine spezielle Feld in dem EXE-Datei-Eintrag, der auf Windows sagt arguemnts als Unicode zu übergeben? Danke.

War es hilfreich?

Lösung

Moderne Versionen von Windows verwenden intern UTF-16. Wenn Sie also eine ausführbare Datei zu starten, alle Kommandozeilen wahrscheinlich Argumente werden als UTF-16 bestanden von Anfang an, und die Laufzeitbibliothek in die gestarteten Anwendung verknüpfen entweder übergibt die Argumente durch unversehrt (bei Verwendung von wmain) oder wandelt sie in der lokalen Codierung automatisch (bei Verwendung von main). (Konkret würde dies durch wmainCRTStartup / mainCRTStartup erfolgen, die sind die eigentlichen Einstiegspunkte verwendet für Konsole Windows-Anwendungen.)

Andere Tipps

Erstens: ein pedantisch rant: wmain bekommt sicherlich nicht Unicode-Argumente. Unicode unabhängig irgendeiner bestimmten Codierung definiert ist. wmain erhält Argumente in einer 16-Bit-Zeichencodierung von Unicode, UTF-16 bei einer Vermutung. Ich habe gerade überprüft Microsoft-Dokumentation auf wmain und die Verbindungen aus, und es ist klar, dass Microsoft hatte keine Ahnung, was Unicode ist, wenn sie es geschrieben haben.

Wie auch immer, der Einstiegspunkt eines Programms wird durch den Linker definiert. Ein C-Programm hat immer eine bestimmte Menge von Prolog-Code, der ausgeführt wird, bevor main / wmain / WinMain / wWinMain. Wenn einer der breiten Versionen von Haupt verwendet wird, wandelt der Prolog-Code die Zeichen in der Umgebung von welchem ??Zeichensatz sie in der breiten Zeichen Version ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top