我们可以改变size_t
C语言的大小吗?
3 回答
不,但你为什么还要这样做呢?
size_t
不是宏。它是一个typedef
适合的无符号整数类型。
size_t
在<stddef.h>
(和其他标题)中定义。
它可能是typedef unsigned long long size_t;
,你真的不应该考虑改变它。标准库按照标准库的定义使用它。如果你改变它,因为你不能改变 Standard Library,你会得到各种各样的错误,因为你的程序使用了与标准库不同的 size_t 大小。您不能再调用malloc()
, strncpy()
, snprintf()
, ...
如果你想 fork Linux 或 NetBSD,那么“是”
尽管您可以重新定义宏,但这可能是 typedef。
如果您正在定义一个环境,那么size_t
根据您的喜好指定是完全合理的。然后,您将负责符合代码所期望的所有 C99 标准函数size_t
。
所以,这取决于你的情况。如果您正在为现有平台开发应用程序,那么答案是否定的。
但是,如果您要使用一个或多个编译器定义原始环境,那么答案是肯定的,但是您的工作已经完成。您将需要使用 API 元素实现所有库例程,其中的 API 元素size_t
可以使用新的size_t
typedef 与其余代码一起编译。所以,如果你 fork NetBSD 或 Linux,也许是为了一个嵌入式系统,那就去吧。否则,您很可能会发现它“不值得努力”。