未知类型名称'uint8_t',MinGW

问题描述 投票:58回答:3

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

c windows mingw
3个回答
118
投票

尝试包括stdint.hinttypes.h


16
投票

要使用uint8_t类型别名,您必须包含stdint.h标准头。


5
投票

编辑:

要清楚:如果你的#includes的顺序很重要并且它不属于你的设计模式(读作:你不知道为什么),那么你需要重新考虑你的设计。最有可能的,这只是意味着你需要将#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移到任何需要它的库之上,你不应该再得到错误了。

© www.soinside.com 2019 - 2024. All rights reserved.