MinGW ( MinGW-w64, ), Windows API, . , , :
#define _WIN32_WINNT 0x0600
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <wchar.h>
#include <windows.h>
int main (void)
{
int argc;
int i;
LPWSTR *argv;
argv = CommandLineToArgvW(GetCommandLineW(), &argc);
if (argv == NULL)
{
FormatMessageA(
(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS),
NULL,
GetLastError(),
0,
(LPWSTR)&error, 0,
NULL);
fprintf(stderr, error);
fprintf(stderr, "\n");
LocalFree(error);
return EXIT_FAILURE;
}
for (i = 0; i < argc; ++i)
wprintf(L"argv[%d]: %ls\n", i, argv[i]);
LocalFree(argv);
return 0;
}
: Windows . Windows, ( ), ,
example -o àlf
Windows, :
argv[0]: example
argv[1]: -o
argv[2]: a\u0300lf
a\u0300 - U+0061 (LATIN SMALL LETTER A), Unicode U+0300 (COMBINING GRAVE ACCENT).
example -o àlf
U+00E0 (LATIN SMALL LETTER A WITH GRAVE), :
argv[0]: example
argv[1]: -o
argv[2]: \u00E0lf
\u00E0 - à, Unicode U + 00E0. , , 1258 . , .
, , NormalizeString. , , , . , , .