管理头文件中的枚举成员

问题描述 投票:0回答:1

在我正在开发的应用程序中,有一个头文件负责ADC的全部功能,我们称之为adc.h

其中有一个枚举指示 ADC 中使用的输入 PIN。

typedef enum
{
    a_in_1         = adc1 | 0x00,   //TEMP_SENSOR_1
    a_in_2         = adc1 | 0x01,   //TEMP_SENSOR_2
    a_in_3         = adc1 | 0x07,   //TEMP_SENSOR_3
    a_in_4         = adc1 | 0x08,   //TEMP_SENSOR_4
}adc_Input_t;

另一个头文件负责声明软件中将使用的结构体,它称为 struct.h

在那里,我想定义一个负责保存传感器信息的结构。

typedef struct
{
    uint16_t adc_value;             // raw value
    uint16_t counter_breakline;     // counter for line fault
    uint16_t counter_shortcircuit;  // counter for short circuit
    uint8_t  error_adc;             // flag to indicate an error in ADC
    uint8_t  input;                 // ADC input pin
    float    temperature;           // current temperature
    
}sensor_temp_t;

我对成员input的想法是保存ADC引脚,如第一个结构中所述。我可以将该成员定义为:

adc_Input_t input;

但我不想包含标头 adc.h,因为 struct.h 包含在其他几个文件中,而 ADC 标头则不包含,并且我不想使其对其他文件可见,如果我将 adc.h 包含在 struct.h 中会发生什么。

我的疑问是,将 input 成员定义为 uint8_t 而不是 adc_Input_t 是否正确? 如果我像我一样定义这个成员,会导致一些错误吗?

在我的测试期间,它似乎工作正常,但是,我不确定这是否是处理这种情况的正确方法。

c enumeration
1个回答
0
投票

枚举被视为整数类型。

因此,假设枚举的有效值范围适合

uint8_t
,这应该按预期工作。

© www.soinside.com 2019 - 2024. All rights reserved.