练习操作系统的进程同步与互斥时,编译时一直提示重复定义,即使加了#ifndef还是报同样的错误

在Linux系统里IPC练习进程同步互斥,做消费者和生产者的问题时,在当前目录下建立了这几个文件:

img

三个.c文件中均包含ipc.h这个头文件,对其make时提示重定义的问题

img

提示我的头文件中有一个结构体进行了重定义

img

之后百度,要加入预编译命令防止重定义,我就在那个头文件里加入了他们

img

img

分别是在头文件的开头和结尾加的,但还是报同样的错误,这该怎么办?

重定义是因为你的ipc.h和msg.h里都定义了同名变量

如果你引用sys/msg.h 了的话,就不要自己再定义msgbuf结构体了。另外,你mian函数中定义rate变量前的int关键字都拼错了。 搞个ide检查检查语法吧

扩展名.c改为.cpp