clang, libtooling добавить новый канонический встроенный тип данных

В программе, использующей libtooling, есть ли способ сделать некоторые типы распознанными как «встроенные типы»?
Например, я бы хотел, чтобы int16_t, uint32_t и т. Д. Распознавались как канонические встроенные типы, а не как typedef для short, unsigned и т. Д.

0

Решение

Если вы посмотрите на ".../llvm/tools/clang/include/clang/AST/BuiltinTypes.def", тогда это объявит встроенные типы как int а также long long, Это не совсем ясно, правда. Вам нужно будет изменить немного кода, например, есть части определений типов в ".../llvm/tools/clang/lib/Sema/Sema.cpp" а также ".../llvm/tools/clang/lib/AST/Type.cpp", Если вы grep для Int128 (хороший выбор, так как сам Clang не использует [много] в себе, в отличие от, например, size_t), вы увидите, что он появляется во многих местах. Вы должны были бы покрыть все (или, по крайней мере, большинство) из этих мест дополнительным кодом, чтобы представить новые типы ваших собственных разработок.

Я бы сказал, что, вероятно, гораздо проще сделать что-то вроде clang -include cstdint myprog.cpp, Другими словами, убедитесь, что #include <cstdint> [или ваша собственная версия файла того же типа] выполняется за кулисами в компиляторе — вы также можете добавить это к своему драйверу в своем собственном коде.

2

Другие решения


По вопросам рекламы [email protected]