关于Berkeley DB源代码中的两个有关问题,求解
关于Berkeley DB源代码中的两个问题,求解
berkeley DB的源代码,发现里面的大部分函数都用 _P括起来,如:
int (*compare) /* comparison function */
__P((const DBT *, const DBT *));
请问下 _P 这个是什么东西呀 ,有什么用。(找遍了所有头文件和预定义,并没有发现_P的定义)
2
typedef struct {
#define R_DUP 0x01 /* duplicate keys */
u_long flags;
u_int cachesize; /* 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),说明作者对这个结构体的名字不是很关心,只需要引用一下就可以了。
berkeley DB的源代码,发现里面的大部分函数都用 _P括起来,如:
int (*compare) /* comparison function */
__P((const DBT *, const DBT *));
请问下 _P 这个是什么东西呀 ,有什么用。(找遍了所有头文件和预定义,并没有发现_P的定义)
2
typedef struct {
#define R_DUP 0x01 /* duplicate keys */
u_long flags;
u_int cachesize; /* 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),说明作者对这个结构体的名字不是很关心,只需要引用一下就可以了。