C stdint 类型的预声明
Predeclaration of C stdint types
当我尝试声明在 stdint.h
中定义的某些类型时,与 /usr/include/bits/stdint-uintn.h:24:19
预声明发生冲突
typedef struct __uint8_t uint8_t;
错误信息:
/usr/include/bits/stdint-uintn.h:24:19: error: conflicting types for ‘uint8_t’
24 | typedef __uint8_t uint8_t;
| ^~~~~~~
In file included from ../src/server/connection.c:1:
../src/server/connection.h:4:26: note: previous declaration of ‘uint8_t’ was here
4 | typedef struct __uint8_t uint8_t;
如何在我的头文件中预先声明这些类型以避免循环依赖?
这是因为stdint.h
包括bits/stdint-uintn.h
,其中
typedef struct __uint8_t uint8_t;
已定义。
您不应该重新定义 uint8_t
。对我来说,解决方案是删除
typedef struct __uint8_t uint8_t;
来自您的文件 ../src/server/connection.c
.
你有什么理由需要自己重新定义它吗?
#include <stdint.h>
是声明这些类型的正确方法。任何其他方法未定义 and/or non-portable.
标准 headers 永远不会存在循环依赖问题。
当我尝试声明在 stdint.h
中定义的某些类型时,与 /usr/include/bits/stdint-uintn.h:24:19
预声明发生冲突
typedef struct __uint8_t uint8_t;
错误信息:
/usr/include/bits/stdint-uintn.h:24:19: error: conflicting types for ‘uint8_t’
24 | typedef __uint8_t uint8_t;
| ^~~~~~~
In file included from ../src/server/connection.c:1:
../src/server/connection.h:4:26: note: previous declaration of ‘uint8_t’ was here
4 | typedef struct __uint8_t uint8_t;
如何在我的头文件中预先声明这些类型以避免循环依赖?
这是因为stdint.h
包括bits/stdint-uintn.h
,其中
typedef struct __uint8_t uint8_t;
已定义。
您不应该重新定义 uint8_t
。对我来说,解决方案是删除
typedef struct __uint8_t uint8_t;
来自您的文件 ../src/server/connection.c
.
你有什么理由需要自己重新定义它吗?
#include <stdint.h>
是声明这些类型的正确方法。任何其他方法未定义 and/or non-portable.
标准 headers 永远不会存在循环依赖问题。