使用C ++ 17,gcc的中级C ++程序员。
前提:
目前,我正在使用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 )
后来:
__DefineCommand( testMsg )
{ code body }
除了程序员在实现该功能时所付出的一切之外,还将在该函数的定义中生成对checkArgs( 1, 2, { String, size_t } )
的调用。
我已经有一种检查字符串“ type”的方法。
tl; dr
我只是想看看如何以这种方式以编程方式生成函数,以及是否有选择地提供编译时检查以确保宏参数有效的方法。