未找到来自 header 的类型
Type from included header not found
我的 C-Code 有一个奇怪的问题,我不太明白。
我有两个 header 文件 os_memory.h
和 os_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"
的循环包含。每一个都包含另一个:包含守卫防止递归包含,但很难理解真正发生的事情。你应该尝试解决这个问题。
我的 C-Code 有一个奇怪的问题,我不太明白。
我有两个 header 文件 os_memory.h
和 os_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"
的循环包含。每一个都包含另一个:包含守卫防止递归包含,但很难理解真正发生的事情。你应该尝试解决这个问题。