ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
22 июля
1161932 Топик полностью
AlexBi (07.01.2022 15:28, просмотров: 148) ответил evgeniy1294 на В голом C это делается через функции get/set, в С++ способов гораздо больше. Приведенный вами пример тоже используется, когда переменные принадлежат определенному контексту, lwip целиком на этом. Подразумевается, что количество глобальных переменных небольшое, например счетчик системного таймера. Большое количество глобальных перменных без явной на то необходимости, а также активное использование extern говорит о низкой квалификации программиста.
get/set все же могут значительно снижать производительность программы, тут и лишние вызовы функций, и нарушение работы оптимизатора. Самое главное, непонятно ради чего? Вместо extern v; имеем extern V getV(); и extern setV(V v); В объявлении функций extern написал специально, что бы показать что он есть, хотя его можно не писать. 

У get/set есть свои плюсы, можно делать "отладочную" и "боевую" версию ПО, и брейки на переменную ставить удобнее. Но это про другое.

Использование структуры приводит к чему-то типа

struct {
V1 v1;
V2 v2;
...
} global_context;

И использование в виде global_context.v1 Не понятно в чем отличие от extern

По супер-инклюду можно отдельную ветку открывать, если этот вопрос еще кому-то интересен