我在 C 程序中有许多模块,用于不运行任何操作系统的微控制器。每个模块都有自己的类型定义、枚举和数据结构定义来表示模块的状态,我认为在模块的相关头文件中定义它们会很整洁。
然后,我在 global_var.c 中定义了一个全局变量来“记住”整个系统的当前状态。由于在全局变量的定义中引用了模块的数据结构,因此所有模块头都包含在 global_var.h 中。
但是,这些模块还需要访问全局变量,因此它们也需要包含 global_var.h。
如果我真的想保留我的全局变量,如何避免相互包含头文件?
非常感谢!
global_var.h
#ifndef GLOBAL_VAR_H
#define GLOBAL_VAR_H
#include "module.h"
typedef struct GLOBAL_STRUCTURE {
module_structure m;
} global_structure;
#endif
global_var.c
#include "global_var.h"
global_structure gs;
模块.h
#ifndef MODULE_H
#define MODULE_H
typedef struct MODULE_STRUCTURE {
int a;
} module_structure;
void module_function(void);
#endif
模块.c
#include "global_var.h"
extern global_structure gs;
void module_function(void) {
gs.m.a=0;
}