使用 wmain
Microsoft 特定的
在 Unicode 程式設計模型中,您可以定義函式的 main
寬字元版本。
wmain
如果您想要撰寫符合 Unicode 程式設計模型的可攜式程式碼,請使用 而不是 main
。
如同 main
,數個限制適用于 wmain
不適用於任何其他 C 函式的函式。
wmain
函式:
- 無法宣告為
inline
。 - 無法宣告為
static
。 - 無法取得其位址。
- 無法從程式呼叫。
函式 wmain
簽章
函 wmain
式沒有宣告,因為它內建在語言中。 如果這麼做,的 wmain
宣告語法看起來會像這樣:
int wmain( void );
int wmain( int argc, wchar_t *argv[ ] );
int wmain( int argc, wchar_t *argv[ ], wchar_t *envp[ ] );
函 wmain
式是使用下列其中一個簽章隱含宣告。 當您定義函 wmain
式時,您可以使用其中任何一個簽章。 然後您可以傳遞寬字元引數以及 (選擇性的) 一個指向程式的寬字元環境指標。 當未傳回任何值時,Microsoft 編譯器也允許 wmain
具有 的傳回型 void
別。 的 argv
和 envp
參數 wmain
也可以定義為 型別 wchar_t**
。 如需引數的詳細資訊,請參閱 引數描述。
envp
環境
如果您的程式使用函 main
式,則會在程式啟動時由執行時間程式庫建立多位元組字元環境。 環境的寬字元複本只有在需要時才建立 (例如,藉著呼叫 _wgetenv
或 _wputenv
函式)。 在第一次呼叫 _wputenv
時,或在第一次呼叫 _wgetenv
時,如果 MBCS 環境已經存在,則會建立對應的寬字元字串環境,然後再由 _wenviron
全域變數 (是 _environ
全域變數的寬字元版本) 指向該變數。 此時會同時存在兩個環境 (MBCS 和 Unicode) 的複本,並由作業系統在整個程式存留期裡進行維護。
同樣地,如果您的程式使用函 wmain
式,則會在程式啟動時建立寬字元環境,並由全域變數指向 _wenviron
。 MBCS (ASCII) 環境是在第一次呼叫 _putenv
或 getenv
時建立的,並且由 _environ
全域變數指向。
如需 MBCS 環境的詳細資訊,請參閱 國際化。
END Microsoft Specific