请用ADS的朋友帮忙看看,这个编译错误如何消除

[复制链接]
 楼主| lhzw2001 发表于 2008-4-23 16:50 | 显示全部楼层 |阅读模式
int&nbsp;test(void);<br />void&nbsp;tt1(void);<br />//////////////////////////////////////&nbsp;<br />int&nbsp;test(void)<br />{<br />int&nbsp;i;<br />for&nbsp;(i=0;i&lt100;i++)&nbsp;;&nbsp;//测试,随便写个<br />return&nbsp;1;<br />}<br />//===================================<br />void&nbsp;tt1(void)<br />{<br />int&nbsp;i;<br />for&nbsp;(i=0;i&lt100;i++)&nbsp;;<br />}<br />//===================================<br />&nbsp;void&nbsp;kk(int&nbsp;(*function)())<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;(*function)();//&nbsp;测试<br />}<br /><br />//===================================<br />int&nbsp;main(void)<br />{<br />while(1)<br />&nbsp;{<br />&nbsp;&nbsp;&nbsp;kk(test);<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;kk((int)tt1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;这里报错了!!!!!!!!??????<br />&nbsp;}<br />}<br />//===================================
dld2 发表于 2008-4-23 16:57 | 显示全部楼层

说得很清楚,类型不匹配

对函数指针变量来说,类型包括参数和返回值。
 楼主| lhzw2001 发表于 2008-4-23 17:04 | 显示全部楼层

我强制转换 (int) 不起作用吗?

  
 楼主| lhzw2001 发表于 2008-4-23 17:17 | 显示全部楼层

小弟眼拙,恳请指正

  
LPcfANS 发表于 2008-4-23 18:13 | 显示全部楼层

指针...括号...

  
HWM 发表于 2008-4-23 18:21 | 显示全部楼层

LZ:给你一个范例,但还是别这样玩,费神!

int&nbsp;test(&nbsp;void&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />}<br /><br />void&nbsp;test1(&nbsp;void&nbsp;)<br />{<br />}<br /><br />void&nbsp;t_fun(&nbsp;int&nbsp;func(void)&nbsp;&nbsp;)<br />{<br />}<br /><br />int&nbsp;main&nbsp;(&nbsp;void&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;t_fun(&nbsp;test&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;t_fun(&nbsp;(int(*)(void))test1&nbsp;);<br />}<br />
cheng1236 发表于 2008-4-23 20:05 | 显示全部楼层

回复

不匹配啊
 楼主| lhzw2001 发表于 2008-4-23 21:07 | 显示全部楼层

谢谢7楼的HWM的正解!

<br />这样玩确实费神&nbsp;,&nbsp;我原以为强制转换一下就行,没想到这个强制转换竟这么大牌,呵!<br /><br />但还是有些看不懂!还请HWM兄多多讲解!我以下分解可对?<br /><br />&nbsp;t_fun(&nbsp;(int(*)(void))test1&nbsp;);<br /><br />(int(*)(void))分解如下:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int(*)(void)&nbsp;&nbsp;&nbsp;转成int指针类型方匹配<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*)(void)&nbsp;&nbsp;&nbsp;转成指针类型<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(void)&nbsp;&nbsp;&nbsp;函数原类型<br /><br />感觉又不对,void&nbsp;test1();&nbsp;函数定义前的void指的是返回类型为空,而欲传递的值应该是函数的地址吧,这两者有关系吗?实在不解!<br /><br />我想实现的功能就是,所传递的函数类型各不一样,有的是int有的是void<br /><br />是否有其它方法呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

78

主题

341

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

78

主题

341

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部