好的,所以我理解 #include
的工作原理是查找您要包含的内容并遵守该内容并将其替换为包含的位置。然而,当我假设这一点时,我的程序无法编译,并且到处都是 __ is undefined 。
例如,在我的 main.c 中会有类似的内容
#include "tim.h"
#include "tim_cfg.h"
#include "tim_api.h"
tim.h 包含一些typesdef
,例如
typedef enum
{
RATE_DIV1 = 0X0,
RATE_DIV2 = 0X1,
RATE_DIV3 = 0X2,
RATE_DIV4 = 0X3,
RATE_DIV5 = 0X4,
RATE_DIV6 = 0X5,
RATE_DIV7 = 0X6,
RATE_DIV8 = 0X7,
RATE_DIV9 = 0X8
} BaseRate_T;
typedef unsigned char byte;
tim_cfg.h 包含寄存器位置和基本struct
typedef struct
{
byte TimerSize;
byte InterruptLevel;
} TIMInfo_T;
和tim_api.h包含tim函数的函数原型(prototype)
所以,问题是为什么我会收到错误
identifier "byte" is undefined
当我首先添加它时?
最佳答案
您应该遵循以下规则:每个头文件都应包含其工作所需的内容。
根据您的设置,如果有人单独包含 tim_cfg.h
,则不会定义 byte
类型。
更好的解决方案是:
tim_cfg.h:
#include "tim.h"
typedef struct
{
byte TimerSize;
byte InterruptLevel;
} TIMInfo_T;
这样,当您包含 tim.cfg.h
时,所需的一切都已存在。
关于c - 包含头文件功能如何实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22721809/