Программирование на C. Урок 31. Выравнивание полей в структурах. Объединения

Поділитися
Вставка

КОМЕНТАРІ •

  • @zloykapitan3101
    @zloykapitan3101 Рік тому +1

    Насчет объединений. Одно из применений:
    typedef union
    {
    struct {
    unsigned char x;
    unsigned short y;
    unsigned int z;};
    char data[8];
    } my_arg_t;
    Допустим, приняли массив данных(char data[8]) по внешнему интерфейсу с известным протоколом, и с помощью объединения мгновенно распарсилось его содержимое на отдельные переменные. Вот только выравнивание компилятором структуры нам как раз тут все и испортит) Именно под такую задачу я нашел ваш ролик, про выравнивание не знал, спасибо.

  • @timelord1137
    @timelord1137 5 років тому +7

    Спасибо, каждый урок - в радость)

  • @Jetmetall
    @Jetmetall 3 роки тому +1

    Спасибо, у вас самые толковые уроки! Объединение можно ещё использовать чтоб одни и те же данные представлять разными типами. Например можно представить все данные входящие в структуру обычным массивом и записать на flash память целиком, а не отдельными полями. И потом считать так же.

  • @alex080583
    @alex080583 5 років тому +1

    интересный разбор структур :-) спасибо

  • @СерегаКостин-ш5б
    @СерегаКостин-ш5б 4 роки тому

    Спасибо !

  • @Hippan_
    @Hippan_ Рік тому

    а каким тогда образом можно получить адрес при big-endian?

  • @U_video
    @U_video 5 років тому

    Спасибо. Скажите, а int может быть не выровнен к 4, и если может, тогда процессор будет дольше с ним работать? И как дела обстоят с компилятором arm у stm. Происходит ли там автоматическое выравнивание полей структур (без команды компилятору) и если происходит, то ко скольки?

    • @narodstream552
      @narodstream552  5 років тому

      Скорее всего. Int - это условный тип, зависящий от среды его использования (не программирования). Я так понимаю, что речь идёт о кросс-компиляторе. Если у Вас есть рабочий ST-Link в качестве отладчика, то Вы вполне можете это увидеть в таком же дизассемблере. Ассемблер для arm не сильно отличается от ассемблера для Intel. Принцип один.
      Мне просто это было не надо, поэтому я, к сожалению, не смотрел.

  • @ayatrakhimzhanov3436
    @ayatrakhimzhanov3436 5 років тому

    Спасибо! У меня к вам вопрос, сможете сделать видео на динамическое выделение памяти ? Трудно в понимании дается.

    • @narodstream552
      @narodstream552  5 років тому +2

      И Вам спасибо за интерес к ресурсу!
      Управление памятью есть в плане.