gpt4 book ai didi

c - c中的typedef枚举解释

转载 作者:行者123 更新时间:2023-12-04 10:43:41 25 4
gpt4 key购买 nike

我正在查看微 Controller 上 ADC 的头文件,其中包含以下代码。

/**
* ADC channels type.
*/

typedef enum {
ADC_CH_0,
ADC_CH_1,
ADC_CH_2,
ADC_CH_3,
ADC_CH_4,
ADC_CH_5,
ADC_CH_6,
} adc_channel_t;

在 ADC 的 main.c 中有以下代码行
adc_channel_t channels[] = {ADC_CH_4, ADC_CH_5};

我想知道为什么需要为 ADC 声明新的数据类型? typedef enum 是什么意思?

谢谢

最佳答案

作为对 artm 回答的补充 typedef enum前面加了, 以方便使用 enum .如果声明看起来像这样:

enum adc_channel_t {
ADC_CH_0,
ADC_CH_1,
ADC_CH_2,
ADC_CH_3,
ADC_CH_4,
ADC_CH_5,
ADC_CH_6,
};

然后线 adc_channel_t channels[] = {ADC_CH_4, ADC_CH_5};必须写成:
enum adc_channel_t channels[] = {ADC_CH_4, ADC_CH_5};
typedef允许我们忽略 enum在每次使用该类型时。

使用有用的常量通常比“魔数(Magic Number)”更受欢迎,尽管在这种情况下常量提供很少的额外信息似乎有点奇怪。然而,它可能很有用,因为枚举器用作额外的描述。例如,您的 IDE 将期望类型为 adc_channel_t 的值将可以建议 channel : ADC_CH_0通过 ADC_CH_6这可能是值的有效范围,而不是简单地告诉您使用数字。

关于c - c中的typedef枚举解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34132439/

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