我在MinGW中使用C得到“未知类型名称'uint8_t'”和其他类似的名称。任何想法如何解决这个问题?
Answers:
编辑:
要清楚:如果您#include
的顺序很重要,并且不是设计模式的一部分(请阅读:您不知道为什么),那么您需要重新考虑设计。最有可能的是,这仅意味着您需要将#include
头文件添加到导致问题的头文件中。
在这一点上,我对讨论/捍卫该示例的优点不感兴趣,但由于它说明了编译过程中的一些细微差别以及它们为什么导致错误的原因,因此将其保留下来。
结束编辑
你需要#include
的stdint.h
在你#include
需要它的任何其他库接口。
例:
我的LCD库使用uint8_t类型。我用接口(Display.h
)和实现(Display.c
)编写了我的库
在display.c中,我具有以下内容。
#include <stdint.h>
#include <string.h>
#include <avr/io.h>
#include <Display.h>
#include <GlobalTime.h>
这可行。
但是,如果我这样重新排列它们:
#include <string.h>
#include <avr/io.h>
#include <Display.h>
#include <GlobalTime.h>
#include <stdint.h>
我得到您描述的错误。这是因为Display.h
需要信息,stdint.h
但无法访问它,因为该信息是在Display.h编译后编译的。
因此,将其移到stdint.h
需要它的任何库之上,您就不会再收到该错误。
Display.h
应该包含一个#include <stdint.h>
。不要依赖包含文件来为您包含事物。这就是标头后卫的用途。
Display.h
需要stdint.h
,不将include直接放入其中是不正常的。
stdint.h
吗?