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