Я пытаюсь понять код, который является частью руководства по разработке многоразовых прошивок.Книга слишком сложна для меня, но все же я пытаюсь понять код.
В примере кода, поставляемом с книгой, есть синтаксис, подобный приведенному ниже
typedef enum
{
DIO_MAX_MODE
}DioMode_t;
typedef enum
{
DIO_PULLUP_DISABLED, /*< Used to disable the internal pull-ups */
DIO_PULLUP_ENABLED, /*< Used to enable the internal pull-ups */
DIO_MAX_RESISTOR /*< Resistor states should be below this value */
}DioResistor_t;
typedef enum
{
DIO_OUTPUT,
DIO_INPUT
}DioDirection_t;
typedef struct
{
DioResistor_t Resistor; /**< Pullup/Pulldown Resistor - ENABLED or DISABLED */
DioDirection_t Direction; /**< Data Direction - OUTPUT or INPUT */
DioMode_t Function; /**< Mux Function - Dio_Peri_Select */
}DioConfig_t;
Если я правильно понимаю, члены структуры являются переменными enum.
И в одной части кода разработчик присваивает ему значение ниже (не точно, я пытаюсь понять, как все это работает,создавая похожий синтаксис)
DioConfig_t config[] = { {1, 2, 3},
{4, 5, 6}
};
Что здесь происходит?Возможно ли это?
При инициализации, как указано выше, влияет ли это на значения перечислений, какие значения меняются и как к ним обращаться?
Редактировать:
Если я создаю структуру, подобную этой
#include <stdio.h>
struct test {
int a;
int b;
};
int main()
{
struct test var[] = { {1, 2}, {3, 4} };
/*
struct test var[0] = {1, 2}
struct test var[1] = {3, 4}
*/
printf("%d %d\n", var[0].a, var[1].a);
return 0;
Я знаю, какие значения присваиваются a
и b
в зависимости от того, какую переменную структуры я использую для их вызова, например: var [0] .a = 1 и var 1 .a = 3
Но код, который я показал сначала, содержит enum
переменных в качестве членов структуры. Значения, присвоенные элементам структуры, равны
config[0].Resistor = 1
config[0].Direction = 2
config[0].Function = 3
Поскольку это enum
переменные, изменится ли оно enum
значений, как ???
PS: Прошло всего несколько месяцев с тех пор, как я начал изучать C. Я использую его для разработкиНебольшие встроенные проекты, я прочитал несколько онлайн-уроков и видео, узнал о структуре и указателях, но когда я открыл этот
код , для меня это не имело особого смысла.Это нормально ??