C++中的Typedef函数指针

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)

有人有主意吗?

Tar*_*ama 8

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(可能在某一点定义),并像常规函数一样调用.