头文件使用另一个标头 - c

时间:2011-03-31 11:22:57

标签: c file header dependencies

  

可能重复:
  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

如果不是一个或另一个那么其他错误导致标题丢失: 它没有定义包含队列的结构。

有没有办法做到这一点......?

3 个答案:

答案 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会有所帮助。