Могу ли я использовать clang для синтаксического анализа кода C, даже если я должен использовать RTTI в своем собственном исходном коде?

#c #parsing #clang

#c #синтаксический анализ #clang

Вопрос:

Я пишу программу на C , в которой мне нужно иметь возможность преобразовывать код C в AST, выполнять некоторые операции над ним, а затем преобразовывать его обратно в строковое представление. Почти на все подобные вопросы, которые я читал, ответ «использовать clang».

Однако, согласно http://amnoid.de/tmp/clangtut/tut.html , флаг -fno-rtti , по-видимому, должен быть предоставлен при компиляции кода, использующего clang, но я использую такие функции, как виртуальные функции и объекты с понижающим преобразованием, используя dynamic_cast в моем собственном коде. Есть ли еще способ использовать clang или мне нужно прибегнуть к другой библиотеке?

Ответ №1:

Сам Clang должен быть скомпилирован с -fno-rtti , но я не думаю, что есть какие-либо требования для -fno-rtti , когда вы используете clang для компиляции (или просто сборки AST из) другого кода.

Ответ №2:

Либо перекомпилируйте Clang с включенным RTTI, либо создайте его как разделяемую библиотеку (хотя в этом я не совсем уверен).