首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于Berkeley DB源代码中的两个有关问题,求解

2012-03-23 
关于Berkeley DB源代码中的两个问题,求解berkeleyDB的源代码,发现里面的大部分函数都用_P括起来,如:int(*c

关于Berkeley DB源代码中的两个问题,求解
berkeley   DB的源代码,发现里面的大部分函数都用   _P括起来,如:
int(*compare)/*   comparison   function   */
        __P((const   DBT   *,   const   DBT   *));
请问下   _P   这个是什么东西呀   ,有什么用。(找遍了所有头文件和预定义,并没有发现_P的定义)

2
typedef   struct   {
#defineR_DUP0x01/*   duplicate   keys   */
u_longflags;
u_intcachesize;/*   bytes   to   cache   *
}  
类似于这样的结构体中的预定义的作用是什么呀。

谢谢诸位!!!:-)


[解决办法]
咋可能没定义呢, 应该像酱紫 ...
#ifdef __STDC__
#define _P(args) args
#else
#deifne _P(args) ()
#endif

C 的函数声明不需要参数列表, 虽然现在不推荐了 ...

跟放在外面一样, 不过通常这个宏只应该在跟改结构相关的地方使用 ...
[解决办法]
__p肯定有定义
可能楼主没仔细找过

楼上的说的很正确!
[解决办法]
因为在实际的代码中不存在
所以也就是相当于在外部定义了一个R_DUP
估计这样写也就看起来知道 这个宏 在这个结构体的对象中有用到吧
[解决办法]
typedef struct {
#define R_DUP 0x01 /* duplicate keys */
u_long flags;
u_int cachesize; /* bytes to cache *
} 楼主写的这个定义是不是还没有写完,struct后面应该有个分号结束.而且后面可以跟上一个定义体,比如 typedef struct {...}myStruct; 那么可以引用这个myStruct了.至于没有象常规的头typdef struct ***(变量名) {...}**(别名); 在C++里会默认给一个变量名(在VC++里类似_unnamed_000a_1),说明作者对这个结构体的名字不是很关心,只需要引用一下就可以了。

热点排行