unknown type name 'uint32_t', MinGW

8
我遇到了错误unknown type name 'uint32_t',我已经包含了stdint.h头文件。但是uint8_tuint16_t却没有报错。
我正在使用MinGW以及以下make-lines:
# Build for Windows under MinGW
#MINGWDBG= -DDEBUG -O0
MINGWDBG= -DNDEBUG -Os
#MINGWOPT= -W -Wall -mthreads -Wl,--subsystem,console $(MINGWDBG) -DHAVE_STDINT
MINGWOPT= -W -Wall -mthreads -Wl,--subsystem,windows $(MINGWDBG)
mingw:
    windres win32\res.rc win32\res.o
    gcc $(MINGWOPT) mongoose.c -lws2_32 \
        -shared -Wl,--out-implib=$(PROG).lib -o $(PROG).dll
    gcc $(MINGWOPT) mongoose.c main.c win32\res.o -lws2_32 -ladvapi32 \
        -o $(PROG).exe

代码:

uint32_t function(void) {
    return VALUE;
}

同时还包括:

#include <stdio.h>
#include <string.h>
#include "mongoose.h"
#include "main.h"
#include <stdint.h>

3
提供uint32_t是可选的。更新你的盒子,你正在使用一个16位处理器。 - Johannes Schaub - litb
4
更新的信息。 Johannes Schaub 的评论很好 :) 但实际上并没有使用16位处理器。 - RobotRock
2个回答

11

如果

#include "main.h"
#include <stdint.h>

没有起作用,但是

#include <stdint.h>
#include "main.h"

如果你的main.h文件依赖于stdint.h,你需要加上#include <stdint.h>main.h中。


8
为了回答自己的问题,改变包含文件的顺序似乎解决了问题。

11
标准头文件可以任意顺序使用,你在自己的头文件中搞错了什么。如果在你自己的头文件中提到了 uint32_t,那么这些头文件中也必须包含 stdint.h。 - ouah
是的,那可能就是了。includesnippet来自main.c,而main.h有一个uin32_t变量。所以改变顺序解决了这个问题。 - RobotRock
3
在这种情况下,您应该考虑将stdint包含在此头文件中! - Jérôme

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接