typedef int (*SUMMARY)(int);是什么意思?
typedef int (*SUMMARY)(int);是什么意思?后面应该是函数指针吧,但前面加了一个typedef是什么意思呢? 问题点数:20、回复次数:10Top
1 楼ChengZi()回复于 2000-09-01 15:42:00 得分 0
定义SUMMARY为函数指针类型。
Example:
SUMMARY pF;
int Foo(int x)
{
....
return x;
}
pF = Foo;
然后可以调用:
int y = (*pF)(3);
y = (*pF)(5);
Top
2 楼Holly()回复于 2000-09-01 16:46:00 得分 0
象使用typedef struct tagSTRUCT{}一样,你就可以用定义的东西声明变量了;
实际就是自己定义一个类型!Top
3 楼iforever(iforever)回复于 2000-09-01 17:07:00 得分 0
看看帮助就行了.
ChengZi的例子很好
Top
4 楼famugong(伐木工)回复于 2000-09-01 20:52:00 得分 0
在我的程序里是这样的:
在Dll中有一函数int Summary(int n)
在客户程序里有这样几行:
typedef int (*SUMMARY)(int);//这里我不太明白,如果要获得函数指针,为何要typedef?
//书上说typedef的语法是typedef 已有类型名 新类型名,
//这里的typedef又有什么用呢?
...
Summary=(SUMMARY)GetProAddress(ghMathsDLL,"Summary");
...
int nSum=Summary(10);//如果SUMMARY是函数指针,那么Summary应该是一个指针,
//那么这行代码是可以的吗?
Top
5 楼ybchen(我)(是)(菜)(鸟)(我)(怕)(谁)回复于 2000-09-01 22:15:00 得分 10
int nSum=Summary(10); //是可以的
//如果不用 typedef 可以这样:
int (*Summary)(int); //定义一个指向参数为一个int,返回值是int的函数
Summary = (int(*)(int)) GetProAddress(ghMathsDLL,"Summary"); //地址赋值需要类型转换
Summary(10); //执行这个地址的函数
//因为函数名本身就是一个地址(指针)
//比如
int MyFunc(int i) //函数的地址为 MyFunc,参数和返回值都是int
{
return i;
}
//和
int MyArray[] = //数组的地址为 MyArray
{
1, 2, 3
};
int *pArray;
int (*pFunc)(int);
pArray = MyArray;
pFunc = MyFunc;
int x = pArray[1]; //地址为 pArray 的数组的第 2 个元素
int y = pFunc(1); //地址为 pFunc 的函数,参数为1时的返回值
//同样
x = MyArray[1]; //地址为 MyArray 的数组的第 2 个元素
y = MyFunc(1); //地址为 MyFunc 的函数,参数为1时的返回值
Top
6 楼ybchen(我)(是)(菜)(鸟)(我)(怕)(谁)回复于 2000-09-01 22:32:00 得分 0
比较有意思的在这儿
1:在DOS下执行重新启动可以这样编
//注:0xffff0000l 是 BIOS 重新启动函数的地址
void main(void)
{
void far (*Reboot)() = (void far(*)()) 0xffff0000l;
Reboot();
}
也可以这样编
void main(void)
{
((void far(*)()) 0xffff0000l)(); //直接调用这个地址的函数
}
那刚才的程序也可以这样编:
int nSum = ((int(*)(int)) GetProcAddress(ghMathsDLL,"Summary"))(10);
即参数为10时的函数值赋值给 nSum。
这个程序只是看看,虽然调用函数的格式没有错,但实际不能这样编,
因为无法判断GetProcAddress函数调用成功与否
Top
7 楼famugong(伐木工)回复于 2000-09-02 10:18:00 得分 0
请再解释一下这里typedef的用法好吗.Top
8 楼joke100(咱们去SLEEP吧...)回复于 2000-09-02 13:11:00 得分 10
typedef int (*SUMMARY)(int);定义了一个指向int型返回值且带有一个int型参数的函数指针类型。在DLL导出操作中应用最为广泛。
这是语法问题,另外一种更常见的typedef应用是重定义数据类型标识,比如typedef WORD myDataType;这样在你的程序里使用myDataType与WORD等价。Top
9 楼famugong(伐木工)回复于 2000-09-02 16:14:00 得分 0
谢谢,
小弟我分已经不多了,还请见谅.Top
相关问题
- typedef int (*SUMMARY)(int);解释一下什么意思
- typedef int (WINAPI *PROC)();是什么意思??
- 请问 typedef int(FUNC2) (int*,int*,int*);是什么意思?谢谢!
- typedef int(&riff)(int,int)是什么意思啊??
- typedef const vector<unsigned int>* (*pfunc)(int)请解释一下意思。
- 请问这样的语句是什么意思? typedef int (WINAPI* INITIALIZE) (int, int, char*, int, int);
- typedef list<CPlugin *> PluginsList /什么意思?
- 这个typedef是什么意思?
- typedef void * sql_context;是什么意思?
- "typedef long SmiINT, WINFAR *SmiLPINT;"什么意思?




