我正在尝试理解c ++标题中的代码。
#define GET_VAL(fn) void fn(int val)
typedef GET_VAL ((*get_val));
struct myStruct
{
get_val getValue;
};
在源文件中,调用函数getValue。
getValue(2);
有人有什么想法吗?
答案 0 :(得分:8)
GET_VAL
宏替换您传递给它的令牌。这样:
typedef GET_VAL ((*get_val));
扩展为:
typedef void (*get_val) (int val);
这是一个指向函数的指针,该函数接受int
并且不返回任何内容。这种类型的函数指针在myStruct
中声明(可能在某一点定义),并像常规函数一样调用。