首頁 > 後端開發 > C++ > C Windows 程式設計中 `main()` 和 `_tmain()` 有什麼差別?

C Windows 程式設計中 `main()` 和 `_tmain()` 有什麼差別?

Barbara Streisand
發布: 2024-12-17 15:55:10
原創
415 人瀏覽過

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

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 程式設計時,可以使用三個主要選項:

  • 透過呼叫wmain() 來顯式啟用Unicode,使用-W Windows API 函數的變體,並使用wchar_t 取代char。
  • 透過呼叫 main()、使用 Windows API 函數的 -A 變體以及使用 char 表示字串來明確停用 Unicode。
  • 透過呼叫 _tmain()、使用 Windows API 函數的無後綴變體以及使用 TCHAR 而不是來允許兩者char/wchar_t。

需要注意的是,這些 Microsoft 特定的擴充功能不符合 C 標準,因此可能不受其他平台支援。

以上是C Windows 程式設計中 `main()` 和 `_tmain()` 有什麼差別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板