未知类型名称'uint8_t',MinGW

时间:2012-01-21 13:20:30

标签: c windows mingw

我得到“未知类型名称'uint8_t'”,其他人喜欢在MinGW中使用C语言。 任何想法如何解决这个问题?

4 个答案:

答案 0 :(得分:116)

尝试添加stdint.hinttypes.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”,并且其中包含操作系统特定的配置。

我会使用您感兴趣的类型来查找其他文件,并找到它们的定义位置/方式(通过查看包含)。