fosstodon.org is one of the many independent Mastodon servers you can use to participate in the fediverse.
Fosstodon is an invite only Mastodon instance that is open to those who are interested in technology; particularly free & open source software. If you wish to join, contact us for an invite.

Administered by:

Server stats:

9.9K
active users

#clang

8 posts7 participants0 posts today

Having to deprecate a part of #poser's API for the first time, I added support for the #deprecated attribute supported by #GCC and #clang and then found #Doxygen couldn't automatically use it.

I didn't want to document deprecation *twice*, so I came up with a little hackery, see screenshots. 🙈

It's not perfect, requiring to type the message in plain text as a macro argument forbids the usage of a comma 😉 But hey, it works!

zirias.github.io/poser/api/lat

Is there a way to get Clang to output the exact number of constexpr evaluation steps it took while evaluating an initializer? AFAICS -ftime-trace only reports the time it took, not the evaluation steps counted against the evaluation step limit.

Use-case: I have some constexpr-heavy C++ code I want to optimize to work with fewer constexpr evals when compiling, so you can do more of the operations of that lib at compile time …

Got some problem with C++:
GCC compiles fine, Clang throws an error.

Minimal reproducer:

template <typename T>
class A {
public:
typedef A<T> self_type;
private:
T v;
public:
constexpr A() : v() {}
constexpr A(T _v): v(_v) {}
public:
static constexpr self_type def = self_type(T(42));
};

int main() {
volatile auto foo = A<int>::def;
(void)foo;
return 0;
}

How to get this to work with Clang? I want to keep def as a class constant.

Разрабатываем собственный анализатор C++ программы в виде плагина для Clang

Есть много проектов, целью которых является превратить С++ более "безопасный" язык программирования. Но внесение изменений в синтаксис языка обычно нарушает обратную совместимость со старым кодом, который был написан до этого. Недавно вышла новая версия библиотеки memsafe для языка С++, которая превращает его в Rust с помощью плагина Clang добавляет в С++ безопасное управление динамической памятью и контроль инвалидации ссылочных типов данных во время компиляции приложения. Но данная статья не о библиотеке, а об особенностях разработки анализатора программы на С++ в виде плагина для Clang. Можно считать, что это подведение итогов по результатам сравнения нескольких разных способов создания плагина для компилятора С++ , а так же очередной Хабрахак для хранения результатов экспериментов и публикации итоговых выводов, которые я решил сохранить не только для себя, но и в виде статьи на Хабре, что бы результатами моего труда могли воспользоваться и другие хорошие люди :-), которым так же может потребоваться погрузиться в дебри парсинга исходного текста программ.

habr.com/ru/articles/900224/

#clang #clangquery #plugin #memsafe #c++ #attribute

ХабрРазрабатываем собственный анализатор C++ программы в виде плагина для ClangЕсть много проектов, целью которых является превратить С++ более "безопасный" язык программирования. Но внесение изменений в синтаксис языка обычно нарушает обратную совместимость со старым...