好的,所以我理解#include
的工作方式是查找你所包含的内容并遵守它并将其替换为包含的内容。但是,当我假设这个时,我的程序没有编译,它给出 _ _在整个地方都是未定义的。
例如,在我的 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
s
typedef struct
{
byte TimerSize;
byte InterruptLevel;
} TIMInfo_T;
和 tim_api.h 包含tim函数的函数原型
所以,问题是为什么我会收到错误
identifier "byte" is undefined
什么时候包含我的第一件事?
答案 0 :(得分:1)
您应遵循每个头文件应包含其工作所需的规则。
使用您的设置,如果某人自己包含tim_cfg.h
,则未定义byte
类型。
更好的解决方案是:
tim_cfg.h:
#include "tim.h"
typedef struct
{
byte TimerSize;
byte InterruptLevel;
} TIMInfo_T;
这样,tim.cfg.h
所需的所有内容都会在您加入时显示