Micktu 😬
ну это ж каст значения по адресу в число
Micktu 😬
не должно быть криминально
🦥Alex Fails
Т.е. сначала разыменовать уаазатель, а потом взять лонг?
Andrei
вообще-то я вижу что в той функции сравниваются поинтеры а не строки
Andrei
так и задумано?
Andrei
Наверное нет.
Micktu 😬
я думаю, ты неправ
Micktu 😬
сравниваются значения, это работает
Micktu 😬
звездочку в макросе узрей
Micktu 😬
макрос возвращает ulong
🦥Alex Fails
Это... а приоритет операций верный?
Andrei
Сравниваются 8 байт.
Micktu 😬
да
Andrei
Если строчка короче 8 байт
Andrei
то сравнивается черт пойми что
Andrei
это UB
Micktu 😬
да, но она не короче 8 байт
Andrei
Обе не короче?
Micktu 😬
да, обе не короче. не бывает
Micktu 😬
все имена файлов нормализованы задолго до этого
Micktu 😬
я согласен что функция говно но она работает
Andrei
Короче, это плохой код. Его сложно читать. алиасить стандартные типы НЕ НАДО
Micktu 😬
та да
Andrei
прям совсем-совсем-совсем не надо.
Micktu 😬
я наверное лучше автошить буду
Micktu 😬
тогда и необходимость в алиасах отпадет
Andrei
Ну явно же ты обманываешь меня
Micktu 😬
потому что длина элемента 2 байта
Andrei
Господи.
Micktu 😬
это массив wchar
Andrei
Понятно.
Andrei
Короче в этой функции плохо ВСЁ
Andrei
даже wchar :D
Micktu 😬
я не соглашусь, довольно очевидно что она делает
Micktu 😬
макроса не должно быть
Andrei
Вместо человеческого UTF8
Micktu 😬
алиаса стринга не должно быть
Micktu 😬
так норм
Micktu 😬
Вместо человеческого UTF8
простите, утф-8 поддерживается стандартной библиотекой?
Micktu 😬
я все экспортирую в utf-8 если что
🦥Alex Fails
Да)
Micktu 😬
литералы видел, а где функции?
Micktu 😬
std::string не предлагать, в дебаге будет херня отображаться
Micktu 😬
в общем тут не могу согласиться пока что
Micktu 😬
если вы мне не откроете глаза что работать в utf-8 можно бесшовно
Andrei
bool ext_equals(const std::wstring& filename, const wchar_t * ext) { return std::wstring(ext) == filename.substr(filename.size() - 4); }
🦥Alex Fails
codecvt вроде б может
Andrei
Да ты офигел.
Micktu 😬
compare не устроил почему?
Micktu 😬
какой к черту сабстринг и аллокация?
Micktu 😬
зачем?
Andrei
Это у тебя быдлокод, а это нормальный, читаемый maintainable код
Andrei
Никаких аллокаций и сабстрингов не будет, компилятор это всё выкинет к чертовой матери.
Micktu 😬
почему не compare?
Andrei
Что значит почему?
Andrei
какая разница? == короче и читаемее чем compare
Micktu 😬
ты же все равно вызываешь substr
Micktu 😬
короче нет, это загончик
Andrei
Лол, ок.
Micktu 😬
этот хак я выкину к чертям
Micktu 😬
но сабстр там не нужен
Andrei
Ради бога, напиши без сабстра, но я не вижу с ним проблемы.
Andrei
Я еще вижу проблему, что бывают ext у файлов больше чем 3 символа.
Matway
Ради бога, напиши без сабстра, но я не вижу с ним проблемы.
Я вижу. Действительно, есть же http://en.cppreference.com/w/cpp/string/basic_string/compare
Micktu 😬
filename.compare(filename.length() - 4, 4, ext);
Andrei
А, блин, про этот compare речь.
Micktu 😬
вот и все
Andrei
Да, с ним лучше конечно.
Andrei
Я подумал про wcscmp
Micktu 😬
точка три буквы
Andrei
Бывает и две и одна и .htaccess
Micktu 😬
Это что, FAT16?
это файловая система конкретного прилжения
Andrei
Линуксовое ядро какое-то
Micktu 😬
в ней не бывает
Andrei
судя по mrb_dump_irep