Как бы вы автоматически сгенерировали реализацию класса во время предварительной компиляции?

#c #build

#c #сборка

Вопрос:

Я рассматривал возможность создания локатора служб, который я также хотел бы предоставить «НУЛЕВЫЕ» реализации предоставляемых им сервисов. Как бы вы проанализировали интерфейс и автоматически сгенерировали реализацию? Какие инструменты вы бы использовали — скажем, с CMake? В принципе, я пытаюсь избежать необходимости писать что-то вроде:

 class IAudio
{
    virtual void playSound(SoundId Id) = 0;
    ....
};

***** Following is the boilerplate I would like to avoid  *****

class NullAudio : IAudio
{
     void playSound(SoundId) override { /* Does Nothing */ }
     ....
};
  

Кажется, я не могу найти ни одного примера из моих поисковых запросов Google для автоматической генерации кода — все они обнаруживают вещи, которые ссылаются на завершение кода в редакторах. Я бы даже подумал о запуске скрипта python, который ищет файлы, начинающиеся с I — like iAUDIO.hpp , анализирует его и записывает файл, если это обычный способ сделать это.

Спасибо!

Комментарии:

1. Хорошо — итак, почему отрицательные голоса? Я пытался исследовать все места, которые я знал, чтобы посмотреть — как я уже сказал — я продолжал получать статьи и вопросы о завершении кода в IDE. Что неясно в вопросе?

Ответ №1:

Думаю, я понял это. Напишите небольшой инструмент, чтобы делать то, что я хочу, настройте CMake для его первой компиляции, а затем попросите CMake запустить инструмент с помощью add_custom_command .