知道typedef的一般用法
比如:typedef unsigned long ACCOUNT
可是
typedef int CALLBACK (*pfshowProgress)(int Progress);这是怎么断句来解释的呢?我知道这个是用来声明一个函数指针
昨天的朋友都没有告诉我具体的断句方法
怎样具体的去看这句话
int CALLBACK 是什么意思?我知道是回调函数,但回调函数不是只要CALLBACK就可以了吗?为什么还要前面加 int?是指整形的回调函数吗?
后面两个括号里面是两个什么东西?根本就没有明白。
*pfshowProgress是什么指针啊?既然它已经是函数指针了,那 int Progress 又是什么?这里究竟声明了几个函数指针啊?还是声明了两个callback函数 一个是指针型,一个是整形,还是其它的什么意思?
我是指概念上的明白,而不是就这一句话的意思。
能不能说得详细一点啊?比如用中括号的形式把这句话的句子结构标明一下:
[typedef] [long] [LONG] a b c
其中 a 是关键字 b是长整形数 c 是要替换字符串"long"的字符串这样我才能明白啊
光说声明一个回调函数,那就不用来问了。我也知道啊。可是,为什么这么写才可以声明呢?
如果你那么有毅力读完了这段话,也许你已经累了。
换换思路,帮我写这个断句吧。
谢谢。
比如:typedef unsigned long ACCOUNT
可是
typedef int CALLBACK (*pfshowProgress)(int Progress);这是怎么断句来解释的呢?我知道这个是用来声明一个函数指针
昨天的朋友都没有告诉我具体的断句方法
怎样具体的去看这句话
int CALLBACK 是什么意思?我知道是回调函数,但回调函数不是只要CALLBACK就可以了吗?为什么还要前面加 int?是指整形的回调函数吗?
后面两个括号里面是两个什么东西?根本就没有明白。
*pfshowProgress是什么指针啊?既然它已经是函数指针了,那 int Progress 又是什么?这里究竟声明了几个函数指针啊?还是声明了两个callback函数 一个是指针型,一个是整形,还是其它的什么意思?
我是指概念上的明白,而不是就这一句话的意思。
能不能说得详细一点啊?比如用中括号的形式把这句话的句子结构标明一下:
[typedef] [long] [LONG] a b c
其中 a 是关键字 b是长整形数 c 是要替换字符串"long"的字符串这样我才能明白啊
光说声明一个回调函数,那就不用来问了。我也知道啊。可是,为什么这么写才可以声明呢?
如果你那么有毅力读完了这段话,也许你已经累了。
换换思路,帮我写这个断句吧。
谢谢。
解决方案 »
- iocp服务器端不能收到客户端断开的通知?
- 服务程序在当前活动的用户session创建的进程,保存文件到桌面,怎么才能保存到当前用户左面
- 关于WSAAsyncSelect的一个怪问题
- 求助 CREATE TABLE 的语法问题
- 如何在一个OnTime()中获得一个视图的句柄,并在其中绘图?
- 求证一个问题,各位请速回,多谢拉
- 如何创建窗口可以使得ClientRect的大小等于屏幕大小
- 如何重载CListCtrl类,使CListCtrl的第一行与第二三列固定不动?
- 我写的一个粒子系统屏保,大家看看不?其中有些技术问题,希望和大家讨论讨论。
- 菜鸟问题,怎样改变CTreeView的全部背景?
- CSCOLLVIEW视图的滚动条问题
- 应用程序为什么会自动退出?
typedef int CALLBACK (*pfshowProgress)(int Progress);
定义了一个函数指针类型pfshowProgress
这个函数指针指向这样的函数:返回值类型是int,有一个int类的参数,而且是回调函数
以后可以这样使用函数指针类型pfshowProgress:
CALLBACK int ShowProgress(int p)
{
}
int p = 5;
pfshowProgress pfn;
pfn = ShowProgress;
pfn(5);
参数类型是重要的,参数名无所谓。给你个简单的例子:
#include <stdio.h>
typedef int (*pfnFunc)(int,int);int Add(int a,int b)
{
return a + b;
}int main(int argc, char* argv[])
{
pfnFunc p; p = Add;
printf("3 + 5 = %d\n",p(3,5));
return 0;
}
中心词是pfshowProgress:下面一步步来:
*pfshowProgress//说明这是一个指针.
(*pfshowProgress)//说明这是一个函数指针.
(*pfshowProgress)(int Progress);//此函数指针指向一个函数,该函数的参数是int Progress.
int CALLBACK (*pfshowProgress)(int Progress);//该函数是CALLBACK类型的,并且其返回值类型是int
//其实这种函数挺多的,类似的有windows中的消息映射函数,比如:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
CALLBACK 是参数压栈规则(关于这个,请到基础类搜索“回调”的帖子)
(*pfshowProgress) 是函数指针类型名
(int Progress) 是参数类型可能这么说还有点模糊,参看相应的函数的声明形式:
int CALLBACK MyCallBack (int Progress)
{
...
}
函数返回类型 声明为回调函数 函数指针 函数参数列表