Заголовочные файлы в Embedded C
Embedded Software for Dummies
0:00 / 0:00
Заголовочные файлы в Embedded C
255 просмотров · 3 мес. назад
Embedded Software for Dummies
1,09 тыс. подписчиков
255 просмотров · 3 мес. назад
Как правильно разделять файлы `.h` и `.c` в Embedded C?
Небольшие проекты могут начинаться с одного файла `main.c`, но реальное программное обеспечение быстро разрастается до драйверов, коммуникационных модулей, конечных автоматов, алгоритмов управления и компонентов приложений.
В этом видео мы объясняем, как работают вместе заголовочные и исходные файлы и как проектировать чистое, модульное встроенное программное обеспечение.
Мы рассмотрим:
Что представляют собой файлы `.h` и `.c`
Что на самом деле делает `#include`
Как работает раздельная компиляция
Объявление против определения
Что должно находиться в заголовочном файле
Что должно оставаться внутри исходного файла
Публичный API против приватной реализации
Как `static` поддерживает инкапсуляцию
Глобальные переменные и `extern`
Почему определение переменных в заголовочных файлах вызывает ошибки компоновщика
Защита от включения и `#pragma once`
Зависимости заголовочных файлов и циклические включения
Почему модуль должен включать свой собственный заголовочный файл
Практические примеры управления двигателем и модулей прошивки
Распространенные ошибки в заголовочных файлах
Заголовочный файл должен предоставлять доступ только к тому, что необходимо другим модулям. Внутренние переменные, вспомогательные функции, состояния контроллера, сведения об оборудовании и константы, специфичные для реализации, обычно должны оставаться приватными внутри файла `.c`.
Такое разделение упрощает понимание, тестирование, модификацию и сопровождение прошивки.
Ключевое сообщение:
Заголовочный файл не является хранилищем всего содержимого модуля. Это публичный контракт между данным модулем и остальной частью прошивки.
#ВстроенныеСистемы #ВстроенныйC #РазработкаПрограммногоПрограммирования #ЗаголовочныеФайлы #ПрограммированиеНаC #Микроконтроллер #BareMetal #АрхитектураПрограммногоПрограммирования #МодульноеПрограммирование #УправлениеДвигателями #ВстроенноеПрограммноеПрограммирование