Парсинг хэдэр файлов

134
24 апреля 2019, 05:30

Есть такая задача: пройтись по хэдэр файлу и записать в список все методы класса, определенные в хэдэре, при этом отделить чистые виртуальные, виртуальные и обычные методы. Также у каждого метода взять возвращаемое значение и занести его в отдельный список.

Так вот: как это сделать универсально? Всмысле перед названием функции может стоять макрос (который не должен никуда включаться), в самом классе межет стоять макрос вида MAC() и тоже не должен включатьс и т.д. Наверняка есть какие-то утилиты для этого.

Answer 1

Используйте clang, который умеет делать ast дерево. Естественно, исходники должны компилироваться. На хабре есть куча статей.

Хотя вполне возможно, что даже консольного вывода может хватить

clang -std=c++11 -Xclang -ast-dump /путь/к/файлу/cpp -I/путь/к/директории/с/include/файлами -Dнужные_макросы -fsyntax-only
READ ALSO
Зачем выделять память для переменных в стеке?

Зачем выделять память для переменных в стеке?

В теме еще разбираюсь плохо так что прошу строго не судить

174
Неправильный выбор конструктора

Неправильный выбор конструктора

Почему эта программа выводит doubledouble, я же явно указываю int?!

158
Обращение к структуре ProcessStartupInformation через wmi в C++

Обращение к структуре ProcessStartupInformation через wmi в C++

Пытаюсь разобраться с wmi, использую последний снипет из статьи Calling a Provider Method Не могу понять как указать ProcessStartupInformation для Win32_ProcessCreate на примере...

156
Задача K Минимум в Полиноме

Задача K Минимум в Полиноме

Вот такая задача на Нахождение K-ого минимума, написал такой код(На базовых примерах работает, на тестах все кроме 1 завалены): Помогите найти...

120