c-将头文件中的typedef枚举包含在另一个头文件中



我在尝试将一个头文件中的枚举包含在另一个文件中时,一直遇到问题。我工作的环境是使用IAR embedded Workbench的嵌入式C。

我有一个名为"enums.h"的专用枚举类型的头文件

#ifndef ENUMS_H_
#define ENUMS_H_
typedef enum
{
SET,
SCHEDULE,
EXECUTE
}action_type_t;
#endif

以及名为"parser.h"的解析器的头文件

#ifndef PARSER_H_
#define PARSER_H_
#include "enums.h"
#include <stdint.h>
typedef struct
{
action_type_t action;
uint16_t nbytes;
}Message;
#endif

在parser.c中,我将头作为包含在内

#include "parser.h"

当我编译这个时,我得到错误"identifier action_type_t is undefined">

我在这里做错了什么?在这一点上我被难住了。

谢谢

您的enum定义缺少逗号,parser.h使用uint16_t时未能包含<stdint.h>,而且更为迂腐的是,您的include-guard宏正在侵占保留的命名空间,因为它以_和大写字母开头。

这应该有效:

enums.h

#ifndef ENUMS_H_
#define ENUMS_H_
typedef enum
{
SET,
SCHEDULE,
EXECUTE, /*the last comma is optional*/
}action_type_t;
#endif

解析器.h

#ifndef PARSER_H_
#define PARSER_H_
#include "enums.h"
#include <stdint.h>
typedef struct
{
action_type_t action;
uint16_t nbytes;
}Message;
#endif

感谢所有回答的人,我想我会回来关闭这个。事实证明,我的项目中包含了一个名称相同但为空的头文件。。。

下次我最好先看看自己的后院,然后再问别人。

然而,PSkocik确实提供了一个工作示例,他的代码非常适合任何偶然进入这个线程的人!

相关内容

  • 没有找到相关文章

最新更新