当前位置: 技术问答>linux和unix
HP-UX下gcc编译器报/usr/include/sys/ipc.h出错
来源: 互联网 发布时间:2015-12-05
本文导语: 系统环境为: HP-UX INDEX01 B.11.23 U ia64 (ta) gcc version 3.4.4编译器 源程序中的头文件包含顺序如下: #include #include #include #include #include #include #include #include 由于要用到共享内存和信号量,所以包含了上叙...
系统环境为:
HP-UX INDEX01 B.11.23 U ia64 (ta)
gcc version 3.4.4编译器
源程序中的头文件包含顺序如下:
#include
#include
#include
#include
#include
#include
#include
#include
由于要用到共享内存和信号量,所以包含了上叙文件,结果编译器报错了,错误提示如下:
/usr/include/sys/ipc.h:51: error: parse error before "cid_t"
/usr/include/sys/ipc.h:56: error: parse error before '}' token
In file included from shmISIN.c:5:
/usr/include/sys/shm.h:82: error: field `shm_perm' has incomplete type
In file included from shmISIN.c:6:
/usr/include/sys/sem.h:91: error: field `sem_perm' has incomplete type
程序采用cc编译器是没有任何问题的,但是由于程序的其他模块必须采用gcc编译器,所以必须得解决这个问题,以前在使用信号量时也曾遇到这个问题,当时我是把#include 注释掉了就可以了,但是共享内存的那个注释掉就出现定义找不到的问题了。
现在项目时间紧急,哪位大侠能够帮我的,不胜感激!分数如果不够,还可以再加,先谢谢了!
HP-UX INDEX01 B.11.23 U ia64 (ta)
gcc version 3.4.4编译器
源程序中的头文件包含顺序如下:
#include
#include
#include
#include
#include
#include
#include
#include
由于要用到共享内存和信号量,所以包含了上叙文件,结果编译器报错了,错误提示如下:
/usr/include/sys/ipc.h:51: error: parse error before "cid_t"
/usr/include/sys/ipc.h:56: error: parse error before '}' token
In file included from shmISIN.c:5:
/usr/include/sys/shm.h:82: error: field `shm_perm' has incomplete type
In file included from shmISIN.c:6:
/usr/include/sys/sem.h:91: error: field `sem_perm' has incomplete type
程序采用cc编译器是没有任何问题的,但是由于程序的其他模块必须采用gcc编译器,所以必须得解决这个问题,以前在使用信号量时也曾遇到这个问题,当时我是把#include 注释掉了就可以了,但是共享内存的那个注释掉就出现定义找不到的问题了。
现在项目时间紧急,哪位大侠能够帮我的,不胜感激!分数如果不够,还可以再加,先谢谢了!
|
可能是gcc优先使用gcc目录下的types.h(如/usr/local/lib/gcc/ia64-hp-hpux11.20/3.4.2/include/sys/types.h
), 而不是/usr/include/sys/types.h导致的这个问题,正确的解决办法是把
# ifndef _CMPTID_T
# define _CMPTID_T
typedef int32_t cid_t; /* For compartment IDs */
typedef cid_t cmpt_t;
# endif /* _CMPTID_T */
添加到gcc目录下的types.h里面。
), 而不是/usr/include/sys/types.h导致的这个问题,正确的解决办法是把
# ifndef _CMPTID_T
# define _CMPTID_T
typedef int32_t cid_t; /* For compartment IDs */
typedef cid_t cmpt_t;
# endif /* _CMPTID_T */
添加到gcc目录下的types.h里面。
|
有时候,把头文件调换一下顺序就可以了。