请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站
快捷导航
在ANSI标准中,signal()的声明如下:
     void (*signal(int sig,void (*func)(int)))(int)


signal是一个函数:
     1.它返回一个函数指针void (*p) (int)

     2.它的两个参数是一个是int和一个函数指针void (*p) (int)


下面用typedef进行简化:
      typedef void(*ptr_to_func)(int);
      ptr_to_func signal(int,ptr_to_func);

这样看起来就很好理解啦


网上的一个例子:
  1. #include <stdio.h>

  2. enum { RED, GREEN, BLUE };

  3. void OutputSignal(int sig)
  4. {
  5.         printf("The signal you /'ve input is: ");
  6.         switch(sig)
  7.         {
  8.             case RED:
  9.                    puts("RED!");
  10.                    break;
  11.           case GREEN:
  12.                    puts("GREEN!");
  13.                    break;
  14.           case BLUE:
  15.                    puts("BLUE!");
  16.                    break;
  17.        }
  18. }

  19. void ( *signal( int sig, void (*func)(int) ) ) (int)
  20. {
  21.           puts("Hello, world!");

  22.           func(sig);

  23.           return func;
  24. }

  25. int main(void)
  26. {
  27.            (*signal(GREEN, &OutputSignal))(RED);

  28.            return 0;
  29. }

  30. Output:

  31.      Hello, world!

  32.      The signal you 've input is: GREEN!

  33.      The signal you 've input is: RED!
复制代码





共 0 个关于本帖的回复 最后回复于 2018-4-29 23:39

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

推荐板块

精彩推荐

明星用户

  • admin大叔级摄影爱好者,喜欢分享访问主页>>
  • 堇年积极有责任心,热心公益事业访问主页>>
  • 我爱物联网红米达人,爱拍照的北京女孩访问主页>>

QQ|手机版|小黑屋|我爱物联网(www.52iots.com) ( 豫ICP备12018881号 )  

GMT+8, 2018-8-18 16:18 , Processed in 0.204369 second(s), 37 queries .