2

我们可以改变size_tC语言的大小吗?

4

3 回答 3

8

不,但你为什么还要这样做呢?

于 2009-11-07T01:50:50.643 回答
4

size_t不是宏。它是一个typedef适合的无符号整数类型。

size_t<stddef.h>(和其他标题)中定义。

它可能是typedef unsigned long long size_t;,你真的不应该考虑改变它。标准库按照标准库的定义使用它。如果你改变它,因为你不能改变 Standard Library,你会得到各种各样的错误,因为你的程序使用了与标准库不同的 size_t 大小。您不能再调用malloc(), strncpy(), snprintf(), ...

于 2009-11-07T02:20:32.970 回答
1

如果你想 fork Linux 或 NetBSD,那么“是”

尽管您可以重新定义宏,但这可能是 typedef。

如果您正在定义一个环境,那么size_t根据您的喜好指定是完全合理的。然后,您将负责符合代码所期望的所有 C99 标准函数size_t

所以,这取决于你的情况。如果您正在为现有平台开发应用程序,那么答案是否定的。

但是,如果您要使用一个或多个编译器定义原始环境,那么答案是肯定的,但是您的工作已经完成。您将需要使用 API 元素实现所有库例程,其中的 API 元素size_t可以使用新的size_ttypedef 与其余代码一起编译。所以,如果你 fork NetBSD 或 Linux,也许是为了一个嵌入式系统,那就去吧。否则,您很可能会发现它“不值得努力”。

于 2009-11-07T04:01:42.937 回答