В голом C это делается через функции get/set, в С++ способов
гораздо больше. Приведенный вами пример тоже используется, когда
переменные принадлежат определенному контексту, lwip целиком на
этом. Подразумевается, что количество глобальных переменных
небольшое, например счетчик системного таймера. Большое количество
глобальных перменных без явной на то необходимости, а также
активное использование extern говорит о низкой квалификации
программиста. * Чем-то похоже на споры вокруг супер-инклюда (одного на весь проект) vs отдельные инклюды, во времена расцвета C
У меня в проекте 89 заголовков без учета библиотек типа lwip. Давайте я всё это запихну в один заголовок на 20к строк? А потом буду включать всё это куда надо и куда не надо.