问题

 
int (*new_phase_hook) __P((int)) = NULL;

提问:
 
这句C语言的定义是什么意思?
下面是用到它的一个函数:
void
new_phase(p)
int p;
{
    phase = p;
    if(new_phase_hook)
        (*new_phase_hook)(p);
    notify(phasechange, p);
}
主要是解释一下这个if语句就可以了。
 
解答:
 
if语句就是判断函数指针new_phase_hook是否为空呀
new_phase_hook是一个指向函数的指针, 我把他的定义处找到:

int (*new_phase_hook) __P((int)) = NULL;

好像跟别的函数指针的定义不一样,其中__P的定义为:

#ifndef __P
#ifdef __STDC__
#define __P(x)x
#else
#define __P(x)()
#endif
#endif

 
所以__P((int))如何解释为:
 
#ifndef __P
#ifdef __STDC__
#define __P(x)x 此时int (*new-phase-hook) __P((int)) = NULL展开就是int (*new_phase_hook)(int)=NULL。
#else
#define __P(x)()此时int (*new_phase_hook) __P((int)) = NULL展开就是int (*new_phase_hook)()=NULL。
#endif
#endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值