【发布时间】:2019-05-12 22:09:46
【问题描述】:
在我的代码中,我使用的是 ssize_t,但是当我尝试编译项目时,我得到了 错误:未知类型名称“ssize_t”;你的意思是“size_t”吗?
要编译项目,我使用 cc -std=c11 -O3 我包括 stdint.h,我也尝试过 stddef.h 和其他。
我必须使用一些标志还是什么?
【问题讨论】:
在我的代码中,我使用的是 ssize_t,但是当我尝试编译项目时,我得到了 错误:未知类型名称“ssize_t”;你的意思是“size_t”吗?
要编译项目,我使用 cc -std=c11 -O3 我包括 stdint.h,我也尝试过 stddef.h 和其他。
我必须使用一些标志还是什么?
【问题讨论】:
“signed-size_t”不是标准 C 的一部分,而是特定于 POSIX(Unix、BSD、Linux 等)并且位于 sys/types.h 中:
https://pubs.opengroup.org/onlinepubs/7908799/xsh/systypes.h.html
在 Windows 上,ssize_t 未定义,但 SSIZE_T 已定义 - 但我假设您使用的是 POSIX 系统。
【讨论】:
ssize_t,除非使用返回它的接口,除非您包含定义它的标头,否则它将不可用。
union 而不知道您可以使用哪些字段,因为它是未定义的行为。您可能需要一个 struct 包围 union 并提供有关要使用的字段的信息,与一个可以是正数或负数来表示两种不同事物的简单数字相比,这已经是很多开销了。此外,无符号整数非常危险