我试图弄清楚如何将 C 头文件与#ifndef 和#include 一起使用。假设我有这两个头文件:
标头A.h:
#ifndef HEADERA_H
#define HEADERA_H
#include "headerB.h"
typedef int MyInt;
TFoo foo;
... some other structures from headerB.h ...
#endif
标头B.h
#ifndef HEADERB_H
#define HEADERB_H
#include "headerA.h"
typedef struct foo{
MyInt x;
} TFoo;
#endif
标头A.c
#include "headerA.h"
... some code ...
标头B.c
#include "headerB.h"
... some code ...
编译 headerB.c 时,它说
In file included from headerB.h,
from headerB.c:
headerA.h: error: unknown type name ‘MyInt’
我认为,这是因为在headerB.h编译时,它定义了HEADERB_H,然后,当headerA.h想要包含headerB.h时,#ifndef HEADERA_H
is false = 跳过包含。
这里的最佳做法是什么?我刚刚读到,最佳做法是#include
在头文件中执行所有指令,但在这种情况下它看起来像一个问题。
编辑:好的,很抱歉误导你。这只是来自具有更多文件的更大项目的示例。