基本上,我已经定义并输入了这个结构:
typedef struct{
void** elements;
int numElements;
int itemSize;
int capacity;
int dynamicElements;
}array;
我已经编写了动态数组操作函数。但是,我有点问题。在各种函数中,我将此结构作为参数传递。为了模块化代码,我需要在头文件中对这些函数进行原型化(为了允许类型数组的参数,我需要在这些头文件中包含“array.h”。)
因此,在包含所有头文件之后,“array.h”头文件已被多次包含。正如所预料的那样,struct类型不止一次被typedef,并导致冲突。
我的问题是:如何在我的头文件中使用此定义,以便多次包含它时不会中断?
答案 0 :(得分:10)
#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
将具有与包含守护习语相同的效果。