Heim > Backend-Entwicklung > C++ > Was ist der Unterschied zwischen „main()' und „_tmain()' in der C-Windows-Programmierung?

Was ist der Unterschied zwischen „main()' und „_tmain()' in der C-Windows-Programmierung?

Barbara Streisand
Freigeben: 2024-12-17 15:55:10
Original
414 Leute haben es durchsucht

What's the Difference Between `main()` and `_tmain()` in C   Windows Programming?

Unterschied zwischen _tmain() und main() in C

In C ist der Standard-Programmeinstiegspunkt main(), der akzeptiert eine dieser Signaturen:

int main();
int main(int argc, char* argv[]);
Nach dem Login kopieren

Microsoft hat jedoch eine Erweiterung namens wmain() eingeführt, die die zweite Signatur ersetzt mit:

int wmain(int argc, wchar_t* argv[]);
Nach dem Login kopieren

Um den Übergang zwischen Unicode (UTF-16) und ihrem Multibyte-Zeichensatz zu erleichtern, hat Microsoft außerdem _tmain() definiert, das bei aktiviertem Unicode als wmain und ansonsten als main kompiliert wird ().

Unterschiede zwischen der Zeichenverarbeitung

Die Ungleichheit zwischen main() und _tmain() in Ihrem Beispiel entsteht durch eine falsche Verwendung von main(). wmain() ist darauf ausgelegt, wchar_t-Argumente zu akzeptieren, während main() char erwartet. Da der Compiler bei der Durchsetzung des richtigen Typs für main() lax ist, interpretiert das Programm das Array von wchar_t-Strings als char-Strings.

In UTF-16 werden ASCII-Zeichen als Bytepaar dargestellt, mit dem ASCII-Wert, gefolgt von einem Nullbyte. Da es sich bei x86-CPUs um Little-Endian-Prozessoren handelt, werden diese Bytes ausgetauscht. Somit sieht Ihr Programm in einem char-String, der nullterminiert ist, eine Reihe von Strings, von denen jeder ein einzelnes Byte lang ist.

Optionen für die Windows-Programmierung

Wann Beim Arbeiten mit der Windows-Programmierung stehen drei Hauptoptionen zur Verfügung:

  • Unicode explizit aktivieren, indem wmain() aufgerufen wird und die -W-Varianten von verwendet werden Windows-API-Funktionen und Verwendung von wchar_t anstelle von char.
  • Deaktivieren Sie Unicode explizit, indem Sie main() aufrufen, -A-Varianten von Windows-API-Funktionen verwenden und char für Zeichenfolgen verwenden.
  • Beides zulassen durch Aufruf von _tmain(), Verwendung der suffixlosen Varianten von Windows-API-Funktionen und Verwendung von TCHAR stattdessen char/wchar_t.

Es ist wichtig zu beachten, dass diese Microsoft-spezifischen Erweiterungen nicht dem C-Standard entsprechen und daher möglicherweise nicht auf anderen Plattformen unterstützt werden.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen „main()' und „_tmain()' in der C-Windows-Programmierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage