这句话是什么意思

typedef unsigned (__stdcall *PTHREAD_START) (void *);
能再详细点吗?
如果PTHREAD_START为特定原型函数,那么,这句定义是什么呢?
我的意思是说,如果typedef int LONG 我可以认为定义了一个int的别名LONG,那么这个呢?
或者说,这个typedef是干什么用的?
能不能不要这样, 这么快就处理了?

第1个回答  2012-11-04
定义PTHREAD_START为特定原型函数的指针类型别名,该函数原型遵守__stdcall调用约定,形参为一个void指针,返回值为一个无符号整型变量。
比如 PTHREAD_START pthread; 就定义了一个函数指针pthread,该指针可以指向一个符合上述函数原型的函数。追问

能再详细点吗?
如果PTHREAD_START为特定原型函数,那么,这句定义是什么呢?我的意思是说,如果typedef int LONG 我可以认为定义了一个int的别名LONG,那么这个呢?
或者说,这个typedef是干什么用的?

追答

typedef是用于定义类型别名的,注意只能是类型的别名,而不像#define那样可以定义任意标识符的别名,typedef int LONG就定义了int类型的别名LONG,今后定义int型变量时可以用LONG替换int。同样,PTHREAD_START为特定原型函数指针类型的别名,我们可以使用这个类型别名来定义一个特定原型函数的指针。

如果没有这个PTHREAD_START的typedef定义,那么我们每次要实现这个功能——定义该原型函数的指针时都要这么写:
unsigned (__stdcall *pThreadProc) (void *); //定义一个符合上述原型的函数的指针
pThreadProc = 某某函数名;
有了这个typedef定义,我们就可以利用这个类型别名来定义变量,如:
PTHREAD_START pThreadProc;

pThreadProc = 某某函数名;

显然这样既方便又增加了程序的可读性。

追问

额.你不早回答,只能说谢谢了

追答

没事,明白就好。

本回答被网友采纳
第2个回答  2012-11-04
定义一个无符号的,stdcall调用约定的,空指针为参数的函数指针。追问

能再详细点吗?
如果PTHREAD_START为特定原型函数,那么,这句定义是什么呢?我的意思是说,如果typedef int LONG 我可以认为定义了一个int的别名LONG,那么这个呢?
或者说,这个typedef是干什么用的?
不能追问他了,追问你啦...

追答

没看懂你什么意思。这也没什么特别的意思啊,就是定义一个函数指针。如果你有个函数返回无符号,并且空参数,那么就可以用pthread_start去指向这个函数,那么对这个指针的调用就等于对函数的调用。一般也就调用dll的时候用得多一些。

本回答被提问者采纳
第3个回答  2020-10-26

What’s wrong with you?

相似回答