未找到来自 header 的类型

Type from included header not found

我的 C-Code 有一个奇怪的问题,我不太明白。
我有两个 header 文件 os_memory.hos_mem_drivers.h.

os_memory.h

#ifndef OS_MEMORY_H_
#define OS_MEMORY_H_

#include "lcd.h"
#include "os_mem_drivers.h"

static const MemAddr gui_alloc_table_start = 0x1C8;

#endif /* OS_MEMORY_H_ */

os_mem_drivers.h

#ifndef OS_MEM_DRIVERS_H_
#define OS_MEM_DRIVERS_H_

#include "os_memory.h"
#include "defines.h"
#include "os_core.h"

typedef uint16_t MemAddr;

#endif

如果我尝试编译此代码,编译器会给我错误 unknown type name 'MemAddr'。我不明白,因为我在每个 .h 文件中包含了正确的 header 文件,所以不应该有任何错误。
我在这里遗漏了什么吗?

我在这个项目中使用 AtmelStudio 6.1 和 C 语言。

您应该在包含 "os_memory.h" 之前移动类型 MemAddr 的定义:

os_mem_drivers.h:

#ifndef OS_MEM_DRIVERS_H_
#define OS_MEM_DRIVERS_H_

#include <stdint.h>

typedef uint16_t MemAddr;

#include "os_memory.h"
#include "defines.h"
#include "os_core.h"

#endif

但更重要的问题是"os_memory.h""os_mem_drivers.h"的循环包含。每一个都包含另一个:包含守卫防止递归包含,但很难理解真正发生的事情。你应该尝试解决这个问题。