jemmyzhang
驱动牛犊
驱动牛犊
  • 注册日期2004-12-22
  • 最后登录2005-05-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1421回复:4

问打印驱动代码含义,请大侠指教

楼主#
更多 发布于:2005-01-03 20:52
问打印驱动代码含义,请大侠指教
int lpt_sel_prn_method(int id, int color, int media, int quality)
{
static int (*inst[])(int, int, int, int) = {
lpt_sel_prn_method3, lpt_sel_prn_method1
};
return (*inst[id != 3])(id, color, media, quality);
}
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-01-04 08:31
根据id值判断是调用lpt_sel_prn_method3函数,还是调用lpt_sel_prn_method,


这里使用了指针函数数组inst[]
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
jemmyzhang
驱动牛犊
驱动牛犊
  • 注册日期2004-12-22
  • 最后登录2005-05-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-01-04 08:58
(*inst[])(int, int, int, int)这个函数看不懂,(*inst[])是函数名吗,后面的是它的参数?

另外怎么来通过id值来判断调用方法的,这句话return (*inst[id != 3])(id, color, media, quality);能否给详细解释一下?谢谢
liwashington
驱动小牛
驱动小牛
  • 注册日期2004-04-30
  • 最后登录2010-10-21
  • 粉丝0
  • 关注0
  • 积分-11分
  • 威望98点
  • 贡献值1点
  • 好评度12点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-01-11 14:34
(*inst[])(int, int, int, int)
这是个函数指针数组,inst是数组名,(int, int, int, int)是指针所指向的函数的参数形式,而lpt_sel_prn_method3,lpt_sel_prn_method1才是具体的函数名。

至于通过ID判断则在id != 3这里,也就是说当ID等于3时,该表达式为0,则执行inst[0]指针所指向的函数,否则执行其它。

我这里也不是很清楚,就是按原码中应该是在id!=3时执行inst[1],但我记得id!=3该表达式有0或非零,但非0不一定是1呀。
我只想有个好老婆,每天有几顿好饭吃……
jemmyzhang
驱动牛犊
驱动牛犊
  • 注册日期2004-12-22
  • 最后登录2005-05-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-01-12 18:00
c语言里布尔表达式的值就是0和1
其他情况下“非0既真”的情况才适用的
游客

返回顶部