Недавно набрёл на доклад Герба Саттера на тему cppfront
Показаны сообщения с ярлыком C. Показать все сообщения
Показаны сообщения с ярлыком C. Показать все сообщения
четверг, 17 августа 2023 г.
воскресенье, 25 июля 2021 г.
extern "C" и namespaces в C/C++ или как я подгорел на выходных
За что я люблю и ненавижу C++ одновременно - так это за то, что он может заставить себя почувствовать дураком и нубом себя в любой момент работы с ним.
TL;DR никогда ни за что, не мешайте extern "C" и пространства имён в определениях функций. Это не работает нормально ни в одном компиляторе и, как обычно, это описано только где-то в дебрях stackoverflow, хоть и разрешено в компиляторах MinGW и MSVC .
Замечу, что эта проверка есть в SonarSource но почему-то в виденных мной учебниках плюсов это правило отсутствует, что принципиально неправильно.
четверг, 9 марта 2017 г.
Clang и GCC: бенчмарк от Phoronix
Вот тут на phoronix провели сравнение Clang и GCC. Вкратце: результаты получились очень даже неоднозначными: где-то выиграл Clang, где-то GCC. Правда на физике (Bullet) выиграл почему-то GCC.
Вполне возможно, что мой бенчмарк из предыдущего поста просто попал в те нагрузки, на которых как раз Clang лучше срабатывает. Такие дела.
P.S. Про результаты опроса помню. Пост будет, но позднее, как только появится на него время.
Вполне возможно, что мой бенчмарк из предыдущего поста просто попал в те нагрузки, на которых как раз Clang лучше срабатывает. Такие дела.
P.S. Про результаты опроса помню. Пост будет, но позднее, как только появится на него время.
воскресенье, 23 февраля 2014 г.
Ruby 2.0 + DevIL + Windows
Есть такая библиотека для работы с изображениями - DevIL. Библиотека довольно старая, собрать её из исходников под виндой практически невозможно, но зато поддерживает кучу форматов и вообще замечательная.
У этой библиотеки есть биндинги для Ruby, чем я и воспользовался, написав небольшой генератор текстурных атласов.
Недавно заметил, что на новый Ruby он перестал ставиться, ввиду того, что во-первых либа под новую Ruby не собрана, а во-вторых - из-за чуши в extconf.rb её вероятность собраться под Windows была крайне мала. На моё issue было отвечено гробовой тишиной, так как автор походу перестал поддерживать его году в 2010.
Засучив рукава, форкнул репозиторий и принялся исправлять. Скажу сразу - в итоге справился.
Гем заработал и я его даже у себя протестировал.
Вкратце расскажу, что поразило. В первую очередь, структура Rakefile сильно поменялась года за четыре, да и косяк в extconf.rb оказалось не так легко исправить. Хотя бы из-за проблемы разделителей путей, которые упорно в одних случаях нормально работают в GCC, хотя заданы слешами, а в других - нет и приходится перекраивать путь "вручную".
Вторая проблема - принудительная линковка, либо с либой от другого компилятора, либо с DLL. Это довольно глупый и костыльный хак, который поддерживается GCC и который частенько приходится использовать. Из-за обработки параметров в Makefile пришлось подхачить, но взлетело.
Самое главное - вот это вот . Потому что это может быть малопонятная ошибка в рантайме, которую руби показывает, как исключение, и она в командной строке непонятна совсем. Убило три часа моей жизни и доставило много недовольства. Хинт: в таких случаях имеет смысл использовать Dependency Walker - он может показать, что случилось, почему не подгрузилось и избавить от гадания на ключах компилятора.
У этой библиотеки есть биндинги для Ruby, чем я и воспользовался, написав небольшой генератор текстурных атласов.
Недавно заметил, что на новый Ruby он перестал ставиться, ввиду того, что во-первых либа под новую Ruby не собрана, а во-вторых - из-за чуши в extconf.rb её вероятность собраться под Windows была крайне мала. На моё issue было отвечено гробовой тишиной, так как автор походу перестал поддерживать его году в 2010.
Засучив рукава, форкнул репозиторий и принялся исправлять. Скажу сразу - в итоге справился.
Гем заработал и я его даже у себя протестировал.
Вкратце расскажу, что поразило. В первую очередь, структура Rakefile сильно поменялась года за четыре, да и косяк в extconf.rb оказалось не так легко исправить. Хотя бы из-за проблемы разделителей путей, которые упорно в одних случаях нормально работают в GCC, хотя заданы слешами, а в других - нет и приходится перекраивать путь "вручную".
Вторая проблема - принудительная линковка, либо с либой от другого компилятора, либо с DLL. Это довольно глупый и костыльный хак, который поддерживается GCC и который частенько приходится использовать. Из-за обработки параметров в Makefile пришлось подхачить, но взлетело.
Самое главное - вот это вот . Потому что это может быть малопонятная ошибка в рантайме, которую руби показывает, как исключение, и она в командной строке непонятна совсем. Убило три часа моей жизни и доставило много недовольства. Хинт: в таких случаях имеет смысл использовать Dependency Walker - он может показать, что случилось, почему не подгрузилось и избавить от гадания на ключах компилятора.
среда, 21 сентября 2011 г.
Подписаться на:
Сообщения (Atom)