包含多次的头文件中的Typedef

时间:2012-03-04 00:49:58

标签: c header struct typedef header-files

基本上,我已经定义并输入了这个结构:

typedef struct{
    void** elements;
    int numElements;
    int itemSize;
    int capacity;
    int dynamicElements;
}array;

我已经编写了动态数组操作函数。但是,我有点问题。在各种函数中,我将此结构作为参数传递。为了模块化代码,我需要在头文件中对这些函数进行原型化(为了允许类型数组的参数,我需要在这些头文件中包含“array.h”。)

因此,在包含所有头文件之后,“array.h”头文件已被多次包含。正如所预料的那样,struct类型不止一次被typedef,并导致冲突。

我的问题是:如何在我的头文件中使用此定义,以便多次包含它时不会中断?

3 个答案:

答案 0 :(得分:10)

使用include guards

#ifndef ARRAY_H_
#define ARRAY_H_

typedef struct {
    ...
} array;

#endif

答案 1 :(得分:2)

常见的习惯用法是按照以下方式构建标题:

#ifndef array_h_
#define array_h_

// Contents of header file go here

#endif // array_h_

这样可以防止标题多次出现#include。

答案 2 :(得分:2)

在一些现有的编译器中,在头文件的开头使用#pragma once将具有与包含守护习语相同的效果。