可能重复:
How to declare a structure in a header that is to be used by multiple files in c?
c代码,头文件问题。
我有一个标题(list.h)文件定义了两个链表结构,另一个queue.h包含了队列的定义。
有一个结构包含list.h中定义的列表和队列,因此它依赖于queue.h文件。
包含所有其他结构的结构在list.h文件中定义,处理它的函数在list.c文件中定义。因此,两个文件都需要包含queue.h。
但是如果我将它包含在list.h和list.c文件中,我会收到以下错误。
..\/queue.h:13:16: error: redefinition of 'struct qqq'
..\/queue.h:13:16: note: originally defined here
如果不是一个或另一个那么其他错误导致标题丢失: 它没有定义包含队列的结构。
有没有办法做到这一点......?
答案 0 :(得分:3)
您应该使用#ifndef
预处理程序语句来防止标题内容被包含两次:
queue.h:
#ifndef QUEUE_H
#define QUEUE_H
// QUEUE_H can be anything, but must be a unique constant specifiqu to your file
typedef struct {
// ...
} queue;
#endif
对于所有头文件(每次都有不同的常量),只需这样就可以了。它可以工作。
答案 1 :(得分:0)
使用它来定义列表和队列头文件
#ifndef HEADERNAME_H_
#define HEADERNAME_H_
// your code for header file
#endif
答案 2 :(得分:0)
Include Guards会有所帮助。