Korzystanie z akcji wmain
Specyficzne dla firmy Microsoft
W modelu programowania Unicode można zdefiniować szeroką wersję main
funkcji. Użyj wmain
zamiast main
, jeśli chcesz napisać przenośny kod zgodny z modelem programowania Unicode.
Podobnie jak main
w przypadku funkcji , do wmain
funkcji, która nie ma zastosowania do żadnych innych funkcji języka C. Funkcja wmain
:
- Nie można zadeklarować jako
inline
. - Nie można zadeklarować jako
static
. - Nie można podjąć jego adresu.
- Nie można wywołać z programu.
Podpis wmain
funkcji
Funkcja wmain
nie ma deklaracji, ponieważ jest wbudowana w język. Jeśli tak, składnia deklaracji dla wmain
elementu będzie wyglądać następująco:
int wmain( void );
int wmain( int argc, wchar_t *argv[ ] );
int wmain( int argc, wchar_t *argv[ ], wchar_t *envp[ ] );
Funkcja wmain
jest zadeklarowana niejawnie przy użyciu jednego z tych podpisów. Podczas definiowania wmain
funkcji można użyć dowolnego z tych podpisów. Następnie można przekazać argumenty o szerokim znaku i opcjonalnie wskaźnik środowiska o szerokim znaku do programu. Kompilator firmy Microsoft umożliwia wmain
również zwracanie typu void
, gdy żadna wartość nie jest zwracana. Parametry argv
i envp
do można również zdefiniować wmain
jako typ wchar_t**
. Aby uzyskać więcej informacji na temat argumentów, zobacz Opis argumentu.
Środowisko envp
Jeśli program używa main
funkcji, środowisko wielobajtowe jest tworzone przez bibliotekę czasu wykonywania podczas uruchamiania programu. Kopia całego środowiska jest tworzona tylko w razie potrzeby (na przykład przez wywołanie _wgetenv
funkcji lub _wputenv
). Przy pierwszym wywołaniu metody _wputenv
lub przy pierwszym wywołaniu metody , jeśli _wgetenv
środowisko MBCS już istnieje, zostanie utworzone odpowiednie środowisko ciągów wieloznakowych, a następnie jest wskazywane przez _wenviron
zmienną globalną, która jest wersją _environ
zmiennej globalnej o szerokim znaku. W tym momencie istnieją jednocześnie dwie kopie środowiska (MBCS i Unicode) i są obsługiwane przez system operacyjny w całym życiu programu.
Podobnie, jeśli program używa wmain
funkcji, środowisko szerokiego znaku jest tworzone podczas uruchamiania programu i jest wskazywane przez zmienną _wenviron
globalną. Środowisko MBCS (ASCII) jest tworzone przy pierwszym wywołaniu metody _putenv
lub getenv
, i jest wskazywane przez zmienną _environ
globalną.
Aby uzyskać więcej informacji na temat środowiska MBCS, zobacz Internationalization (Internacjonalizacja).
END Microsoft Specific