gpt4 book ai didi

c - 定义枚举类型是否有大量的内存标记?

转载 作者:行者123 更新时间:2023-12-04 09:12:49 24 4
gpt4 key购买 nike

我正在使用具有32K内存的嵌入式设备,使用IAR EWARM v6.30以纯C语言编写。

为了使代码更具可读性,我想定义一些枚举类型,例如

{RIGHT_BUTTON, CENTER_BUTTON, LEFT_BUTTON}


而不是使用0、1、2值,但是恐怕会占用已经稀缺的额外内存。

所以我有两个问题:
1)我可以强制枚举为int的short或byte型intead吗?
2)定义枚举类型的确切内存标记是什么?

最佳答案

在完全兼容的ISO C中,枚举常量的大小和类型为signed int。一些嵌入式系统编译器故意不将其作为优化或扩展。

在ISO C ++中,“枚举的基础类型是整数类型,可以表示枚举中定义的所有枚举器值。”,因此,编译器可以自由使用最小的类型,大多数可以,但不必这样做。所以。

对于您的情况(IAR EWARM),该手册明确指出:



不需要任何选项,实际上,您需要使用--enum_is_int强制执行兼容行为。其他编译器的行为可能有所不同,或者具有不同的扩展名,实用说明或控制此选项的选项。通常在文档中定义此类内容。

关于c - 定义枚举类型是否有大量的内存标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10006700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com