Joh*_*ohn 1 c++ function-pointers c-preprocessor
我试图理解c ++头文件中的代码.
#define GET_VAL(fn) void fn(int val)
typedef GET_VAL ((*get_val));
struct myStruct
{
get_val getValue;
};
Run Code Online (Sandbox Code Playgroud)
在源文件中,调用函数getValue.
getValue(2);
Run Code Online (Sandbox Code Playgroud)
有人有主意吗?
该GET_VAL宏代替你传递给它的令牌.这个:
typedef GET_VAL ((*get_val));
Run Code Online (Sandbox Code Playgroud)
扩展到:
typedef void (*get_val) (int val);
Run Code Online (Sandbox Code Playgroud)
这是一个指向函数的指针,该函数接受int并且不返回任何内容.声明了这种类型的函数指针myStruct(可能在某一点定义),并像常规函数一样调用.