C ++ - Объявление «управляемой» функции - PullRequest
0 голосов
/ 23 февраля 2019

Средний C ++ Programmer, использующий C ++ 17, gcc.

Предпосылка:

Сейчас я работаю над интерфейсом CLI для более продвинутой программы.

Чтобы устранить необходимость как в дублировании кода, так и в удобочитаемости, я хочу написать макрос и / или шаблон, где программист может быстро указать параметры вызова функции, чтобы функция checkArgs() автоматически вызываласьс переменными в зависимости от объявления функции.

Пример:

Например:

__Command( String funcName, size_t Min, size_t Max, E_StrType Types[])

Определяет новую команду для интерфейса,если введенная команда соответствует funcName, она вызовет funcName с необходимыми параметрами, если проверка пройдена.

  • funcName = Имя функции
  • Min = минимальное количество аргументов, 0 для необязательного.
  • Max = максимальное количество аргументов, 0 для отсутствующего, если только min! = 0, тогда оно не ограничено (переменная)
  • Types[], список типов, в порядке от первого до последнего,что требует функция.Последний элемент в этом списке становится элементом, используемым для каждого нового аргумента, если Max равен 0.

Пример вызова:

__Command( testMsg, 1, 2, { E_StrType_String, E_StrType_size_t = 1 } )

, который сгенерирует функцию с этой подписью:

testMsg( String Args )

позже a:

__DefineCommand( testMsg )
{ code body }

Будет генерировать вызов checkArgs( 1, 2, { String, size_t } ) в определении функции, в дополнение к тому, что программист вкладывает в реализацию этой функции.

У меня уже есть способ проверки строки "тип".

tl; dr

Я просто смотрю, как можно сгенерировать программные функции подобным образом и, при необходимости, если есть какой-либо способ обеспечить проверку во время компиляциичтобы убедиться, что аргументы макроса верны.

...