【发布时间】:2011-04-05 16:21:13
【问题描述】:
我知道一般来说,函数指针是这样声明的:
void __stdcall my_func(int i) {} // for assigning
void (__stdcall * my_ptr)(int) = &my_func;
现在我有几个以函数指针作为参数的函数:
void calling_func(void (__stdcall * callback)(int)) { *callback(1); }
在头文件中,我只是把东西的名字去掉了:
void calling_func(void (__stdcall *)(int));
瞧,这行得通……让我开始思考:如果这是一个完整的类型声明,难道不能将普通的TYPE NAME = VALUE 语法也用于函数指针吗?
我试图声明:
( void (__stdcall *)(int) ) callback = &my_func;
它也可以编译!为什么不经常使用这个?这个符号有缺陷吗?对我来说,它似乎会极大地简化函数指针的使用......也在typedefs中,例如:通常它是typedef OLDNAME NEWNAME,只是使用函数指针,这是一种奇怪的由内而外的语法,其中新名称实际上位于中间的整个表达式。更不用说返回函数指针的函数的符号了......
【问题讨论】:
标签: c++ syntax function-pointers