首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

问个结构定义的有关问题!·

2012-03-20 
问个结构定义的问题!急~~~有以下结构定义structnand_chip{#ifdefCONFIG_MTD_NANDYvoid(*hwcontrol)(intcmd

问个结构定义的问题!急~~~·
有以下结构定义
struct   nand_chip   {
      #ifdef   CONFIG_MTD_NANDY
void   (*hwcontrol)(int   cmd);
void   (*write_cmd)(u_char   val);
void   (*write_addr)(u_char   val);
u_char   (*read_data)(void);
void   (*write_data)(u_char   val);
void   (*wait_for_ready)(void);
                                }
请问下这结构中的void   (*hwcontrol)(int   cmd);如何解释?是函数吗?在什么地方写相应的代码。


[解决办法]
一堆函数指针

什么叫 在什么地方写相应的代码。
[解决办法]
它们仅仅是函数指针,不是函数,所以没有定义的.

它们可以指向类型相符的函数
[解决办法]
hwcontrol是一个函数指针,函数参数int cmd,返回值void;在有电的设备上写代码,理论上讲都可以编译。
[解决办法]
都是函数指针,就是一个指针,用的时候需要将相对应的函数进行赋值
赋值后和函数就几乎一样了
[解决办法]
把它们当成成员变量一样看就是了
[解决办法]
函数指针而已,如LS,把它当作成员指针变量看就行了
[解决办法]
linux 源代码里到处都是这种定义 呵呵
[解决办法]
void (*wait_for_ready)(void);
函数指针
你给结构体赋值的时候用一个没有返回值和返回类型的函数名字给他就行
[解决办法]
函数指针,指向相对应的类型函数
比如:
int sum(int i, int j)
{
return i + j;
}

指向它的函数指针
int (*PTRSUM)(int i, int j);

使用方法:
PTRSUM p = 0;
p = sum;
int k = p(3, 6);
[解决办法]
struct nand_chip {
#ifdef CONFIG_MTD_NANDY
void (*hwcontrol)(int cmd);
void (*write_cmd)(u_char val);
void (*write_addr)(u_char val);
u_char (*read_data)(void);
void (*write_data)(u_char val);
void (*wait_for_ready)(void);
}

这个结构体的成员变量全是指向函数的指针,用第一个为例

void (*hwcontrol)(int cmd)表示hwcontrol是指向一个返回值为void,参数为int类型的函数指
针.例如: void f(int n){printf( "hello ");}

因为它们并不是函数,所以楼主说的"相应代码"是不存在的.你可以把它们看成类似于
char *p这样的成员,当然不需要代码

使用方法就是先定义一个结构体对象,再用这个指针指向一个对应类型的函数f,
如:

void f(int n){printf( "hello ");}
nand_chip a;
a.hwcontrol=f;

a.hwcontrol(3) 相当于  f(3)

热点排行