使用 C 時,您可以使用 main() 或 _tmain() 進行程式入口。雖然兩者都有相似的用途,但有一個關鍵差異改變了它們處理參數的方式。
根據 C 標準,main 是程式的指定入口點。它遵循兩個簽章之一:
int main(); int main(int argc, char* argv[]);
其中 argc 表示命令列參數的數量,argv 是包含參數的字元陣列的陣列。
_tmain 另一方面,是 Microsoft 特定的擴展,可簡化 Unicode 之間的轉換(UTF-16) 和多位元組字元集。如果啟用 Unicode,則 _tmain 會編譯為 wmain,否則會編譯為 main。
出現此問題是因為您的 _tmain 函數未正確定義。 Wmain 設計為接受 wchar_t 參數,而不是 char 參數。由於編譯器不會對 main 強制執行此規則,因此將 wchar_t 字串陣列傳遞給 main 函數,該函數將它們解釋為 char 字串。
UTF-16,啟用 Unicode 的 Windows 中使用的字元集, 將 ASCII 字元表示為位元組對:後面跟著 ASCII 值。然而,在採用小端位元組順序的 x86 CPU 中,順序是相反的。這意味著在 char 字串中,字串以空字節終止,從而使您的程式識別單字節字串。
開始進行Windows 程式設計時,您會面臨幾個選擇:
以上是C 中關於命令列參數的 `main()` 和 `_tmain()` 有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!