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[]);
Microsoft hat jedoch eine Erweiterung namens wmain() eingeführt, die die zweite Signatur ersetzt mit:
int wmain(int argc, wchar_t* argv[]);
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:
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!