已经通读this related question,但正在寻找更具体的内容。


有没有办法告诉编译器您希望枚举的宽度是多少?
如果是这样,您该怎么做?我知道如何在C#中指定它;在C语言中也一样吗?
甚至值得做吗?将枚举值传递给函数时,是否将其作为int大小的值传递?

最佳答案

有没有办法告诉您的编译器
特别是你想要你的宽度
枚举是?


在一般情况下,没有不在标准C中。


甚至值得做吗?


这取决于上下文。如果您正在谈论将参数传递给函数,那么不,这是不值得的(请参见下文)。如果要在通过枚举类型构建聚合时节省内存,那么可能值得这样做。但是,在C中,您可以在聚合中简单地使用适当大小的整数类型而不是枚举类型。在C中(与C ++相反),枚举类型和整数类型几乎总是可互换的。


当将枚举值传递给函数时,它将以整数大小的值传递吗?


如今,许多(大多数)编译器将所有参数作为给定硬件平台的自然字长值传递。例如,在64位平台上,许多编译器会将所有参数作为64位值传递,无论它们的实际大小如何,即使在该平台上类型int中包含32位(因此,通常也不会以这样的平台上的“整数大小”值)。因此,出于参数传递目的而尝试优化枚举大小没有任何意义。

07-24 09:46
查看更多