Používání akce wmain
Specifické pro Microsoft
V programovacím modelu Unicode můžete definovat širokoznakovou verzi main
funkce. main
Místo wmain
toho, pokud chcete napsat přenosný kód, který dodržuje programovací model Unicode.
Podobně jako main
u funkce, která neplatí pro žádné jiné funkce jazyka wmain
C, platí několik omezení. Funkce wmain
:
- Nelze deklarovat jako
inline
. - Nelze deklarovat jako
static
. - Nemůže mít jeho adresu.
- Nelze volat z programu.
Podpis wmain
funkce
Funkce wmain
nemá deklaraci, protože je integrovaná do jazyka. Pokud ano, syntaxe deklarace by wmain
vypadala takto:
int wmain( void );
int wmain( int argc, wchar_t *argv[ ] );
int wmain( int argc, wchar_t *argv[ ], wchar_t *envp[ ] );
Funkce wmain
je deklarována implicitně pomocí jednoho z těchto podpisů. Při definování funkce wmain
můžete použít kterýkoli z těchto podpisů. Následně je možné do aplikace předat argumenty širokých znaků a volitelně ukazatel prostředí širokých znaků. Kompilátor Microsoftu také umožňuje wmain
návratový typ void
, pokud není vrácena žádná hodnota. Parametry argv
a envp
parametry wmain
lze také definovat jako typ wchar_t**
. Další informace o argumentech naleznete v tématu Popis argumentu.
Prostředí envp
Pokud váš program používá main
funkci, prostředí s vícebajtovými znaky je vytvořeno knihovnou runtime při spuštění programu. Kopie prostředí s širokým znakem se vytvoří pouze v případě potřeby (například voláním _wgetenv
funkcí)._wputenv
Existuje-li již prostředí MBCS, je při prvním volání _wputenv
nebo při prvním volání _wgetenv
vytvořeno odpovídající prostředí řetězce širokého znaku, na které je následně odkázáno pomocí globální proměnné _wenviron
, což je verze širokého znaku globální proměnné _environ
. V tomto okamžiku vedle sebe existují dvě kopie prostředí (znaková sada MBCS a Unicode), které jsou udržovány v operačním systému po celou dobu trvání aplikace.
Podobně platí, že pokud váš program používá wmain
funkci, vytvoří se při spuštění programu široké znakové prostředí, na které _wenviron
odkazuje globální proměnná. Prostředí MBCS (ASCII) se vytvoří při prvním volání _putenv
nebo getenv
a odkazuje na globální proměnnou _environ
.
Další informace o prostředí MBCS naleznete v tématu Internationalization.
END Microsoft Specific