当前位置: 技术问答>linux和unix
关于SUN Solaris中door通讯的低级问题,高手们帮帮忙呀!
来源: 互联网 发布时间:2015-05-09
本文导语: 想用门来作进程间的通讯手段,可是当我只#include 时,编译是door_call函数报没有定义,于是我进入door.h里一看,函数申明如下: #ifndef _ASM int door_create(void (*)(void *, char *, size_t, door_desc_t *, uint_t), voi...
想用门来作进程间的通讯手段,可是当我只#include 时,编译是door_call函数报没有定义,于是我进入door.h里一看,函数申明如下:
#ifndef _ASM
int door_create(void (*)(void *, char *, size_t, door_desc_t *, uint_t),
void *, uint_t);
int door_revoke(int);
int door_info(int, door_info_t *);
int door_call(int, door_arg_t *);
int door_return(char *, size_t, door_desc_t *, uint_t);
int door_cred(door_cred_t *);
int door_bind(int);
int door_unbind(void);
typedef void door_server_func_t(door_info_t *);
door_server_func_t *door_server_create(door_server_func_t *);
#endif /* _ASM */
说明定义了 _ASM
于是查找door.h包涵的头文件sys/door.h
里面对函数的申明如下:
#if defined(_KERNEL)
......
int door_call(int, void *);
......
#endif
于是我在程序开头加了 #define _KERNEL 1
可是编译的时候确报错:
/usr/include/door.h:31: conflicting types for `door_call'
/usr/include/sys/door.h:181: previous declaration of `door_call'
搞不定了,各位高手,帮忙呀!
#ifndef _ASM
int door_create(void (*)(void *, char *, size_t, door_desc_t *, uint_t),
void *, uint_t);
int door_revoke(int);
int door_info(int, door_info_t *);
int door_call(int, door_arg_t *);
int door_return(char *, size_t, door_desc_t *, uint_t);
int door_cred(door_cred_t *);
int door_bind(int);
int door_unbind(void);
typedef void door_server_func_t(door_info_t *);
door_server_func_t *door_server_create(door_server_func_t *);
#endif /* _ASM */
说明定义了 _ASM
于是查找door.h包涵的头文件sys/door.h
里面对函数的申明如下:
#if defined(_KERNEL)
......
int door_call(int, void *);
......
#endif
于是我在程序开头加了 #define _KERNEL 1
可是编译的时候确报错:
/usr/include/door.h:31: conflicting types for `door_call'
/usr/include/sys/door.h:181: previous declaration of `door_call'
搞不定了,各位高手,帮忙呀!
|
应该只用#include 就可以的。如果不行,用gcc -E urfile.c看看为什么没有找到。
|
door_call在usr/include/door.h和/usr/include/sys/door.h都被定义了,
所以导致定义重复。
所以导致定义重复。