我得到“未知类型名称'uint8_t'”,其他人喜欢在MinGW中使用C语言。 任何想法如何解决这个问题?
答案 0 :(得分:116)
尝试添加stdint.h
或inttypes.h
。
答案 1 :(得分:16)
要使用uint8_t
类别别名,您必须添加stdint.h
标准标题。
答案 2 :(得分:5)
编辑:
要清楚:如果您#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
移到任何需要它的库之上,你就不应该再犯错了。
答案 3 :(得分:0)
我必须包含“ PROJECT_NAME / osdep.h”,并且其中包含操作系统特定的配置。
我会使用您感兴趣的类型来查找其他文件,并找到它们的定义位置/方式(通过查看包含)。