我得到了“未知类型名称'uint8_t'”,其他人喜欢在MinGW中使用C语言。任何想法如何解决这个问题?
尝试包括stdint.h
或inttypes.h
。
要使用uint8_t
类型别名,您必须包含stdint.h
标准头。
编辑:
要清楚:如果你的#include
s的顺序很重要并且它不属于你的设计模式(读作:你不知道为什么),那么你需要重新考虑你的设计。最有可能的,这只是意味着你需要将#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
移到任何需要它的库之上,你不应该再得到错误了。