C ++中的Typedef函数指针

时间:2015-03-11 15:51:31

标签: c++ function-pointers c-preprocessor

我正在尝试理解c ++标题中的代码。

#define GET_VAL(fn) void fn(int val)
typedef GET_VAL ((*get_val));
struct myStruct
{ 
    get_val getValue;
};

在源文件中,调用函数getValue。

getValue(2);

有人有什么想法吗?

1 个答案:

答案 0 :(得分:8)

GET_VAL宏替换您传递给它的令牌。这样:

typedef GET_VAL ((*get_val));

扩展为:

typedef void (*get_val) (int val);

这是一个指向函数的指针,该函数接受int并且不返回任何内容。这种类型的函数指针在myStruct中声明(可能在某一点定义),并像常规函数一样调用。