Как инициализировать массивы внутри структуры

Я пытаюсь инициализировать этот тип структуры, но это просто не сработает. Есть идеи, в чем проблема?

    #include <stdint.h>
    #define txBufLen 3

    struct {
        uint8_t Buf[txBufLen];
        uint16_t out;
        uint16_t len;
    }txBuf;


struct txBuf a = {{1, 2, 3}, 5, 3 };

c avr
person Tecbill    schedule 11.05.2017    source источник
comment
Что значит не будет работать? Если есть сообщение об ошибке, рекомендуется включить его в свой вопрос.   -  person Christopher Schneider    schedule 11.05.2017
comment
Что значит не получится? Вы получаете ошибку? Если да, то в чем ошибка?   -  person FortyTwo    schedule 11.05.2017
comment
Ответ здесь. Хотя это и не точная копия вопросы/43831826/   -  person StoryTeller - Unslander Monica    schedule 11.05.2017
comment
Вы объявили переменную безымянного struct и впоследствии использовали ее как тип. Это нет-нет. Так что же такое foo?   -  person DeiDei    schedule 11.05.2017
comment
поместите txBuf сразу после struct   -  person GAURANG VYAS    schedule 11.05.2017


Ответы (2)


struct {
    uint8_t Buf[txBufLen];
    uint16_t out;
    uint16_t len;
}txBuf;

Это определило тип структуры без тегов и немедленно создало глобальную переменную этого типа.

Вам нужно изменить определение на это:

struct txBuf {
    uint8_t Buf[txBufLen];
    uint16_t out;
    uint16_t len;
};
person StoryTeller - Unslander Monica    schedule 11.05.2017

Ваш код дает ошибку компиляции -

struct {
    uint8_t Buf[txBufLen];
    uint16_t out;
    uint16_t len;
}txBuf;

Вышеприведенное объявляет переменную txBuf. Измените выше на -

struct txBuf {
    uint8_t Buf[txBufLen];
    uint16_t out;
    uint16_t len;
};
person GAURANG VYAS    schedule 11.05.2017