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