Nic*_*ick 0 c++ windows macros plugins filemaker
我是 C++ 新手,试图了解这两个宏在此 FileMaker 插件示例中的作用。
#define FMX_PROC(retType) retType __stdcall
#define FMX_PROCPTR(retType, name) typedef retType (__stdcall *name)
Run Code Online (Sandbox Code Playgroud)
到目前为止,我知道它们都是宏,并且是FMX_PROCPTR一个指向接受这两个参数的函数的指针,并且 __stdcall 是某种调用约定(决定不深入研究这意味着什么)。
FMX_PROC(retType)我不明白的是每行的结尾,以及后面的部分FMX_PROCPT(retType, name)。
可能是间距让我感到困惑,但是retType __stdcall返回类型是FMX_PROC(retType)? 或者它给参数一个类型?
代码中的其他地方FMX_PROC(retType)是这样使用的
static FMX_PROC(fmx::errcode) Do_FMmp_ConvertToBase( short /* funcId */, const fmx::ExprEnv& /* environment */, const fmx::DataVect& dataVect, fmx::Data& results )
Run Code Online (Sandbox Code Playgroud)
宏没有返回类型。它们不是函数。为了表达这种差异,此类宏被称为“类函数宏”,即它们看起来像函数,但它们不是函数。预处理器替换FMX_PROC(fmx::errcode)为fmx::errcode __stdcall. 也就是说,这个:
static FMX_PROC(fmx::errcode) Do_FMmp_ConvertToBase( short /* funcId */, const fmx::ExprEnv& /* environment */, const fmx::DataVect& dataVect, fmx::Data& results )
Run Code Online (Sandbox Code Playgroud)
扩展到这个
static fmx::errcode __stdcall Do_FMmp_ConvertToBase( short /* funcId */, const fmx::ExprEnv& /* environment */, const fmx::DataVect& dataVect, fmx::Data& results )
Run Code Online (Sandbox Code Playgroud)
它是一个函数声明,fmx::errcode也是它的返回类型。
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |