S
SIGSEGV DREC
@segfault_drec747 подп.
1.0Kпросмотров
23 марта 2025 г.
Score: 1.1K
butt plugin Следующим шагом преисполнения в познании стоит разработка плагина для clang. Почти всё взято отсюда, поэтому проще сказать об отличиях. Начинаем начинать! Для плагинов есть свой список (вероятно, так стоит переводить registry), добавим в него наш плагин. static clang::FrontendPluginRegistry::Add<FistingAction> FistingPlugin("fisting", "Find fisting for 300&#036; in code."); При этом FistingAction почти не отличается от оригинала, разве что наследуется от другого базового класса и должен уметь (или делать вид, что умеет) обрабатывать опции. class FistingAction final : public clang::PluginASTAction { public: bool ParseArgs(const clang::CompilerInstance &compiler, const std::vector<std::string> &arg) override { for (auto it = arg.begin(); it != arg.end(); ++it) { if (*it == "fisting") { llvm::outs() << "You needn't enable fisting manually, just send me 300&#036;!&#092;n"; } } return true; } }; И всё? И всё! Точнее, осталось собрать это дело в fisting.so и запустить его. clang++ example.cpp -fsyntax-only -fplugin=./fisting.so -Xclang -plugin -Xclang fisting -fplugin-arg-fisting-fisting И радуемся своим 300&#036;! #compiler #llvm
1.0K
просмотров
1232
символов
Нет
эмодзи
Нет
медиа

Другие посты @segfault_drec

Все посты канала →
butt plugin Следующим шагом преисполнения в познании стоит р — @segfault_drec | PostSniper