нормально работает на Windows, но на Android "wchar_t*" почему-то не правильные данные как будто принимает, из-за чего появляется ошибка Failed to open stream.
Я погулил и выяснил, что проблема в том, что на Windows "wchar_t*" имеет 2 байта, а на Android - 4 байта.
Так вот вопрос: можно ли как-то переопределить wchar_t*, чтобы он одинаково был реализовал на большей части поддерживаемых платформ? Может быть для этого есть определенные библиотеки, или это всё не нужно - и конвертацию можно сделать буквально одной строкой кода, через cast какой-нибудь?
Не знаю, но боюсь после переопределения wchar_t на анроиде может что-то поломаться в других (компилируемых-прилинковываемых) местах, которые будут ожидать 4 байта
Справедливо. Тогда может быть есть другие варианты? Я могу использовать wchar_t и char, но программа должна поддерживать кириллицу, а char её не поддерживает, поэтому я выбрал wchar_t.
А вы уверены, что проблема именно в широких символах, а не других проблемах с fopen на Андроид?
Да, уверен. Когда я использую "char" вместо "wchar_t", и в "char" исключительно латинские символы, то все работает хорошо
wchar_t переделать нельзя. Но есть хорошая новость: Твоя проблема не в этом
Это встроенный тип, его нельзя переделать
Это тоже не так...
Я уверен, что проблема НЕ в них
Проблема была в портировании этого типа данных на Unix платформах, но уже решено, спасибо
Обсуждают сегодня