Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4185391
  • 博文数量: 776
  • 博客积分: 13014
  • 博客等级: 上将
  • 技术积分: 10391
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-22 17:00
文章分类

全部博文(776)

文章存档

2015年(55)

2014年(43)

2013年(147)

2012年(20)

2011年(82)

2010年(429)

分类: C/C++

2010-12-09 11:25:41

提问:
 
这句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
阅读(1606) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~