我们可以在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,也许是嵌入式系统,那就去吧。 否则,你可能会发现它“不值得努力”。