阅读以下说明和C语言代码,回答问题1至问题4,将解答填入对应栏内。 【说明】 在嵌入式操作系统设备管理的实现上,常使用到C语言的函数指针变量,由统一的管理函数调用不同的设备驱动程序。下面的一段C语言代码是驱动管理程序 manage_device调用4

admin2009-02-01  50

问题 阅读以下说明和C语言代码,回答问题1至问题4,将解答填入对应栏内。
【说明】
   在嵌入式操作系统设备管理的实现上,常使用到C语言的函数指针变量,由统一的管理函数调用不同的设备驱动程序。下面的一段C语言代码是驱动管理程序 manage_device调用4个不同设备驱动程序,但没有用到函数指针变量。
【C语言代码】
   /*变量与类型说明*/
   #include  "stdio.h"
   #include  "stdlib.h"
   extern int  sys_status;
   extern int Dev_drv1(int arg1, int arg2);
   extern int Dev_drv2(int arg1, int arg2);
   extern int Dev_drv3(int arg1, int arg2);
   extern int Dev_drv4(int arg1, iht arg2);
   #define  NOERROR  0

   type struct {
   int  _fd;
     } TYP_DEV_TAB;
   TYP DEV_TAB  dev_tab[50]= {101,99, 80, 120,};

   /*程序代码*/
   void  manage_device(int devid, int arg1, int arg2)
   {  int  place ;
      int  ret;
       for(place=0 ; place<50 ; place++)
   if dev_tab [place]. fd == devid)  break;
       if(place>=50)
        printf(" NO DEVICE  fd = %d\n ",devid);
      switch(dev_tab [place]._fd)  {
        case  80:
           ret = Dev_drv3(int arg1,int arg2);
           break;
        case  99:
           ret = Dev_drv2(int arg1,int arg2);
           break;
        case  101:
           ret = Dev_drv1(int arg1,int arg2);
           break;
        case  120:
           ret = Dev_drv4(int arg1,int arg2);
           break;
   }
      if (ret!=NOERROR)
   printf(" DEVICE  %d  error!\n ", devid);
   }

   int  Dev_drv1(int arg1,int arg2)
   {
     /*局部变量声明,略*/
     /*驱动程序代码,略*/
   }

   int  Dev_drv2(int arg1,int arg2)
   {
     /*局部变量声明,略*/
     /*驱动程序代码,略*/
   }

   int  Dev_drv3(int arg1,int arg2)
   {
     /*局部变量声明,略*/
     /*驱动程序代码,略*/
   }

   int  Dev_drv4(int arg1,int arg2)
   {
     /*局部变量声明,略*/
     /*驱动程序代码,略*/

选项

答案(1)int (*process)(int arg1,int arg2); (2)int (*ProcAction)(int arg1,int arg2); (3)ProcAction=dev_tab[place].process; (4)ret=ProcAction(arg1,arg2);

解析 本题考查对C语言中函数指针变量的理解和用法。在C语言中,可以用指针变量指向整型变量、字符串、数组、结构变量,也可以指向一个函数,对指针的用法非常灵活,也很容易出错。其中,函数指针变量为较高级的用法。
   一个函数在编译时被分配给一个入口地址,这个入口地址就称为函数的指针。可以用一个指针变量指向函数,然后通过该指针变量调用此函数。
   本题已将使用变量指向函数编写设备驱动程序的大部分给出,只需在对函数指针变量的声明和引用处,只需给出正确的用法即可。
转载请注明原文地址:https://jikaoti.com/ti/OgI7FFFM
0

最新回复(0)