C ++-“托管”函数声明

时间:2019-02-22 23:22:39

标签: c++ macros c++17

使用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

我只是想看看如何以这种方式以编程方式生成函数,以及是否有选择地提供编译时检查以确保宏参数有效的方法。

0 个答案:

没有答案