使用 wmain
Microsoft 特定的
在 Unicode 程式設計模型中,您可以定義函式的 main
寬字元版本。 如果您要撰寫符合 Unicode 程式設計模型的可攜式程式代碼,請使用 wmain
而非 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 特定的