c语言程序求解释

来源:百度知道 编辑:UC知道 时间:2024/05/11 17:43:36
这是一个头文件中的一段,
#ifndef _TSOCKET_H
#define _TSOCKET_H

#include <pctcp/types.h>

struct param {
int (*func)();
int name;
int num_param;
int types[7];
int ret;
};

extern unsigned long specf(struct param *,...);

extern struct param taccept;
extern struct param tbind;

#define accept(a,b,c) (int)specf(&taccept,a,b,c)
#define bind(a,b,c) (int)specf(&tbind,a,b,c)

这里这个param这个struct里面的int (*func)();是什么意思那?

extern unsigned long specf(struct param *,...);这个表示又是什么意思?
谢谢,我再补充一个问题:
您说:extern unsigned long specf(struct param *,...);是声明外部函数
可是我在用VC++中的在文件中查找,来查找specf,除了能查到extern unsigned long specf(struct param *,...);这一个,剩下的就都是#define accept(a,b,c) (int)specf(&taccept,a,b,c)这种定义了,我如何找到specf的函数体,怎么知道他是干什么的那?

int (*func)();表示func是一个指向函数的指针,它指向的函数返回类型为int。

extern unsigned long specf(struct param *,...);是声明外部函数

补充
一般来说,使用这种外部函数,你是看不到它的实现代码的。你想知道它是干什么的,需要查阅相关库的说明文档。就是谁做的库,谁都会写相关函数功能的介绍文档。如果是通用的标准库,你可以试试查msdn

int (*func)();
是函数指针

(struct param *,...);
是参数不定的函数申明
例如printf也是参数不定的

----------------补充--------------
specf的函数体可能在库文件中。
看不到代码的。