Здраствуйте! Существует проблема. Нужно сделать так чтобы код скомпиленный под разными компиляторами (GCC и MinGW) работал одинаково. Это возможно? PS: Буду оч признателен за советы
Есть код:
// uni.c
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
int main(void)
{
setlocale(LC_ALL, "ru_RU.UTF-8");
printf("Size of wchar_t = %d\n", sizeof(wchar_t));
FILE* f = fopen("/home/maxim/uni.txt", "r");
if (!f)
return;
printf("Read = 0x%04X\n", fgetwc(f));
printf("Read = 0x%04X\n", fgetwc(f));
return 0;
}
Есть файл uni.txt записанный в кодировке UTF-8:
$ cat uni.txt
Яблоко
Если скомпилировать программу под gcc и выполнить то получим:
$ gcc -o uni uni.c && ./uniSize of wchar_t = 4
Read = 0x042F
Read = 0x0431
Если скомпилировать программу под mingw и выполнить то получим:
$ i486-mingw32-gcc -o uni.exe uni.c && wine ./uni.exe
Size of wchar_t = 2
Read = 0xFFD0
Read = 0xFFAF
Если запустить нативно программу под виндой то там будет такое:
>uni.exe
Size of wchar_t = 2
Read = 0x00D0
Read = 0x00AF