在C 中,main() 函數作為程式的入口點,接受一個兩個簽章:
或者,Microsoft 引入了擴充以適應Unicode支援:
_tmain() 和main()之間的主要區別在於它們與 Unicode 的用法。如果啟用了 Unicode,_tmain() 會編譯為 wmain(),從而允許它處理 wchar_t 字串。否則,它預設為 main()。
在您的範例中,將 _tmain() 與 char* 參數一起使用會導致意外行為,因為字元的解釋不同。 Windows 在啟用 Unicode 時使用 UTF-16,將 ASCII 字元表示為一對位元組,ASCII 值後面接著一個空位元組。
由於 x86 CPU 的小端位元組序性質,這些位元組被交換,產生 ASCII 值後面跟著一個零(空位元組)。由於字元字串通常以空位元組終止,因此您的程式將每個參數解釋為單字元字串。
要解決此問題,您有三個選項:
請記住,這些擴充和概念是特定於 Microsoft,而不是標準 C 的一部分。
以上是C 中 Unicode 處理的 `_tmain()` 和 `main()` 有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!