clang

  • Хабрахабр

    [Перевод] Компиляция C в WebAssembly без Emscripten

    Компилятор — часть Emscripten. А что, если удалить все свистелки и оставить только его? Но это гораздо больше, чем просто компилятор. Emscripten необходим для компиляции C/C++ в WebAssembly. Для этого Emscripten эмулирует всю операционную систему POSIX. Цель Emscripten в том, чтобы полностью заменить ваш компилятор C/C++ и запустить в вебе код, который изначально не предназначен для Сети. Если используется OpenGL, то…

    Подробнее »
  • Хабрахабр

    Находим баги в LLVM 8 с помощью анализатора PVS-Studio

    Прошло более двух лет с момента последней проверки кода проекта LLVM с помощью нашего анализатора PVS-Studio. Давайте убедимся, что анализатор PVS-Studio по-прежнему является лидирующим инструментом по выявлению ошибок и потенциальных уязвимостей. Для этого проверим и найдём новые ошибки в релизе LLVM 8.0.0. Статья, которая должна быть написана Если честно, мне не хотелось писать эту статью. Неинтересно писать про проект, который…

    Подробнее »
  • Хабрахабр

    Пример разбора C++ кода с помощью libclang на Python

    В C++ есть встроенный механизм Run-Time Type Information (RTTI), и конечно же первая мысль была использовать именно его, но я решил написать свою реализацию, потому что не хотел тянуть весь встроенный механизм, ведь мне нужна была лишь малая часть его функционала. На одном личном проекте на C++ мне потребовалось получать информацию о типах объектов во время выполнения приложения. А еще…

    Подробнее »
  • Хабрахабр

    [Перевод] Как Clang компилирует функцию

    Я планировал написать статью о том, как LLVM оптимизирует функцию, но сначала необходимо написать, как Clang транслирует C или C++ в LLVM. Я хочу обратить внимание на то, как вывод Clang соотносится с входом, при этом мы не будем рассматривать нетривиальные возможности С++. Рассмотрим высокоуровневые аспекты, не погружаясь в глубины Clang. Мы используем эту маленькую функцию, которую я позаимствовал из…

    Подробнее »
  • Хабрахабр

    CLion 2018.3: удаленная разработка, профилирование кода, быстродействие и не только

    Привет, Хабр! 3. На днях мы выпустили CLion 2018. Третий в этом году крупный релиз подытоживает нашу работу по двум важным направлениям развития — улучшению языковой поддержки и удаленной разработке. Кроме того, мы, наконец: добавили средства профилирования кода; переделали команды в редакторе для сборки/пересборки кода на уровне одного файла, нескольких таргетов или всего проекта целиком; вместе с другими IDE на…

    Подробнее »
  • Хабрахабр

    [Из песочницы] C++: сеанс спонтанной археологии и почему не стоит использовать вариативные функции в стиле C

    Началось все, как водится, с ошибки. Я первый раз работал с Java Native Interface и делал в C++ части обертку над функцией, создающей Java объект. Эта функция — CallVoidMethod — вариативна, т.е. помимо указателя на среду JNI, указателя на тип создаваемого объекта и идентификатора вызываемого метода (в данном случае конструктора), она принимает произвольное число других аргументов. Что логично, т.к. эти…

    Подробнее »
  • Хабрахабр

    Как мы перевели 10 миллионов строк кода C++ на стандарт C++14 (а потом и на C++17)

    Некоторое время назад (осенью 2016), при разработке очередной версии технологической платформы 1С:Предприятие внутри команды разработки встал вопрос о поддержке нового стандарта C++14 в нашем коде. Переход на новый стандарт, как мы предполагали, позволил бы нам писать многие вещи элегантней, проще и надежней, упрощал поддержку и сопровождение кода. И в переводе вроде бы нет ничего экстраординарного, если бы не масштабы кодовой…

    Подробнее »
  • Хабрахабр

    clang и IDE: история о дружбе и недружбе

    Чей проект — не спрашивайте, не расскажу. Для меня это началось шесть с половиной лет назад, когда волею судеб меня затянуло в один закрытый проект. Ну, как это недавно сделали в QtCreator, в CLion (в некотором смысле), и т. Скажу лишь, что идея его была проста как грабли: встроить clang front-end в IDE. Clang тогда был восходящей звездой, многие тащились…

    Подробнее »
  • Хабрахабр

    [Перевод] Clang. Часть 1: введение

    Что такое Clang? Я провёл последние несколько месяцев, работая с Clang, фронтендом LLVM. Clang умеет парсить и анализировать любой исходный код на языках семейства С (C, C++, ObjectiveC, и т.п....) и имеет удивительную модульную структуру, которая делает его простым в использовании. Если вы ищете статический анализатор кода, я настоятельно рекомендую Clang, он существенно превосходит другие статические анализаторы (такие, как CIL...)…

    Подробнее »
  • Хабрахабр

    Особенности вызова функций в С++

    В результате возникла данная статья. Не так давно у меня произошёл очередной разговор с коллегой на извечную тему: "по ссылке, или по значению". Далее будут рассмотрены: В ней я хочу изложить результаты моего исследования по этой и смежным темам. Регистры и их назначение при вызове функций. Передача и возврат простых типов и структур. Как передача по ссылке и по значению…

    Подробнее »


Кнопка «Наверх»
Закрыть