我们可以在C中更改size_t的大小吗?

我们可以在C中更改size_t的大小吗?

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

size_t (和其他标题)中定义。

它可能是typedef unsigned long long size_t; 你甚至不应该考虑改变它。 标准库使用标准库定义的标准库。 如果您更改它, 因为您无法更改标准库 ,您将收到各种错误,因为您的程序使用的尺寸与标准库的尺寸不同。 你不能再调用malloc()strncpy()snprintf() ,…

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

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

虽然你可以重新定义宏,但这个宏可能是一个typedef。

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

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

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