C 中_tmain() 和main() 之間的區別
在C 中,標準程序入口點是main() ,它接受以下簽名之一:
int main(); int main(int argc, char* argv[]);
但是,Microsoft引入了一個名為wmain(),它將第二個簽章替換為:
int wmain(int argc, wchar_t* argv[]);
為了簡化Unicode (UTF-16) 與其多位元組字元集之間的轉換,微軟也定義了_tmain(),啟用Unicode 時,編譯為wmain,否則編譯為main()。
字元之間的差異處理
範例中 main() 和 _tmain() 之間的差異是由於 main() 的錯誤使用造成的。 wmain() 被設計為接受 wchar_t 參數,而 main() 則接受 char。由於編譯器在強制執行 main() 的正確類型方面不嚴格,因此程式將 wchar_t 字串陣列解釋為 char 字串。
在 UTF-16 中,ASCII 字元表示為一對位元組,其中ASCII 值後面跟著一個空位元組。由於 x86 CPU 是小端位元組序,因此這些位元組會被交換。因此,在以 null 結尾的 char 字串中,您的程式會看到一系列字串,每個字串都是一個位元組長。
Windows 程式選項
何時使用Windows 程式設計時,可以使用三個主要選項:
需要注意的是,這些 Microsoft 特定的擴充功能不符合 C 標準,因此可能不受其他平台支援。
以上是C Windows 程式設計中 `main()` 和 `_tmain()` 有什麼差別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!