экстерн означает что определено где-то во вне. в с++ не силен, но как понимаю из описания, компилятор не может понять размер чего-то в структуре либо саму структуру

Комментарии: 12

  1. Amir

    Дефайном, но смена на константу тоже не помогла Extern применил к массиву, а не структуре

    • Michael

      копи-пейст структуры полноценной в исходник решит проблему, а оптимизатор уберет лишнее ну тогда массива размер не может определить компилятор

      • Maxim

        До тех пор, пока эти две структуры в результате изменений не рассинхронизируются. А после будет очень веселый сеанс отладки

        • Michael

          с чего должны рассинхронизироваться

          • Maxim

            Пошел, добавил еще одно поле, забыл, что есть копипащенная версия. Или веселее - добавил поле в середину (или поменял размер какого-то поля там).

            • Michael

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

              • Maxim

                К тому программисту, который посоветовал так сделать

                • Michael

                  если структура не меняется, проблем нет. Это же очевидно как день.

                  • Maxim

                    Вроде не в 1960-х годах живем, когда код писали на перфокартах и сдавали в архив. Очевидно, что структура меняется, потому что прошивки в целом имеют свойство дорабатываться. И закладывать туда намеренную бомбу - не самая хорошая идея.

                    • Michael

                      И как это очевидно? Вы даже код не видели.

                      • Maxim

                        Мне не надо видеть код, чтобы сказать, что эта структура будет меняться. Это вообще от конкретного кода не зависит. Это зависит от того, собираются ли прошивку дорабатывать, фиксить баги, добавлять фичи и выпускать новые версии. От того, придет ли заказчик и скажет "хочу, чтобы если дважды хлопнуть и трижды топнуть, светодиод загорался бы красным". Учитывая, что структура называется sSlaveDevice - вряд ли там мигание светодиодом на ардуине.

                        • Michael

                          Допустим эта структура описывает тцп пакет. Она будет дорабатываться? Новый стандарт тцп? Давай-те не будем гадать о том, чего не знаем. А автор должен из переписки сам определить, будет ее менять или нет, и помнить о том. что прийдется менять в нескольких местах. Это азы. И по имени структуры тоже не очень хорошая идея делать выводы.

Не нашли ответ?

Вам также может быть интересно