当前位置:  技术问答>linux和unix

一个奇怪的函数定义,请大师们解释

    来源: 互联网  发布时间:2017-05-18

    本文导语:  最近在看一个国外的开源项目,其中用于信号处理的地方有一个函数,很奇怪,看不懂, #include "includes.h" #include "mcommon.h" static volatile int gotsig; static void fakehandler P((void))       //这个fakehandler 是什么东东?如何是...


最近在看一个国外的开源项目,其中用于信号处理的地方有一个函数,很奇怪,看不懂,

#include "includes.h"
#include "mcommon.h"

static volatile int gotsig;

static void fakehandler P((void))       //这个fakehandler 是什么东东?如何是函数名, 那后面的P又是什么东东?
{ gotsig=1;
}

static void failure P((void)) /* signal trap */     //这个failure是什么东东?如何是函数名, 那后面的P又是什么东东?
  
{ exitflag=2;         /* merely sets a flag */
}

//请问下面是函数定义吗? 怎么又有分号? 请注意qsignal(sig,action)后面直接接上const int sig;这又是什么东东??
void qsignal(sig,action)const int sig;void(*action)P((void));       //注意这行总共包含两个是分号";"
{ gotsig=0;
  if(SIG_IGN==signal(sig,(void(*)())fakehandler))
     signal(sig,SIG_IGN);
  else
   { signal(sig,(void(*)())action);
     if(gotsig)
(*action)();
   }
}

在主程序中,安装信号处理

qsignal(SIGINT,failure);
qsignal(SIGQUIT,failure);
qsignal(SIGTERM,failure);



|
void qsignal(sig,action)const int sig;void(*action)P((void)); 
{
   ...

大致等于

void qsignal(const int  sig,void(*action)(void) action)
{
    ...

看到头文件还有一堆,差点没反应过来:
const char
    *auth_getsecret P((const auth_identity*const pass)),
    *auth_mailboxname P((auth_identity*const pass)),
    *auth_homedir P((const auth_identity*const pass)),
    *auth_shell P((const auth_identity*const pass)),
    *auth_username P((const auth_identity*const pass));

原来是
const char *auth_getsecret (const auth_identity* const pass);
const char *auth_mailboxname (auth_identity* const pass);
const char *auth_homedir (const auth_identity* const pass);
const char *auth_shell (const auth_identity* const pass);
const char *auth_username (const auth_identity* const pass);

果然"变量"不分行不舒服斯基

    
 
 

您可能感兴趣的文章:

  • shm_open函数问题.奇怪!!!奇怪!!!!!
  • 一个特奇怪的函数申明错误
  • 关于gettimeofday() 函数的奇怪问题
  • linux 函数返回值很奇怪 pthread_getspecific(key)
  • 源码中看到一种很奇怪的函数调用,怎么回事?
  • system函数的奇怪问题,进来看看!
  • main函数明显被编译了,可是烧到芯片上后,程序却没变化???奇怪!有哪位碰过这样的问题吗??
  • 太奇怪了,正在开发bootloader,gcc难道有内置的string的处理函数链接到我的程序中了?我根本没有链接C库啊。
  • linux 多线程函数之间乱串的奇怪问题
  • 奇怪,Java中如何判别一个没有明确说明会抛出异常的函数到底会不会抛出异常
  • 一个关于inet_ntoa函数在printf中的奇怪现象(不知算不算linux的bug:-)
  • 一个关于fork函数的奇怪问题!?
  • 输入子系统驱动程序,input_report_ 这类函数的一个奇怪问题
  • 很奇怪的问题,关于类方法函数传递?请看代码:(特邀路人甲、天生不笨等高手)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 奇怪!奇怪!真奇怪!!!
  • 奇怪奇怪真奇怪
  • 奇怪,真奇怪,在线等待
  • 奇怪奇怪...........?????...........
  • solaris上的C程序,编译报错: 存储类只能使用register,奇怪,奇怪!
  • 奇怪!奇怪!我用jbuilder编jsp程序,从数据库中取出的字符串型字段却显示16进制数
  • 奇怪的问题 奇怪的问题,向大家请教
  • 奇怪啊,奇怪,为什么我的JB7做EJB时,只要在EJB设计面板上随便做点东西,我的EJB的JAVA的源码就会变的不见了,或者少了很多字段申明??
  • 奇怪,CSDN的贴子,提问部分我最多能看到第4行??!!
  • accept,recvfrom接收到奇怪的ip
  • 好奇怪的问题哎………………怎么也不能安装!
  • unix下的非常的奇怪WC的问题,向unix高手请教 好急呀!!!!!!!!!!!!!!!
  • 奇怪!关于字串参数的问题?
  • 一个奇怪的路径问题
  • 一些奇怪的现象,帮帮我
  • !!!初学Java,遇到一个奇怪问题,请大家回答!!!
  • SOCKET发送奇怪问题!!!
  • 奇怪的四分之一屏!!
  • 请教redhat8.0中的两个问题~奇怪啊~
  • ————奇怪的现象:不能关闭TOMCAT的问题————


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,