Size: a a a

2021 September 02

SK

Stepan Komarov in Embedded Group
/main.c:147:3: error: 'mega_int' undeclared (first use in this function)
источник

W

Wild_Wind in Embedded Group
Дык объяви сначала. А то хочешь то, чего компилятор не знает.
источник

АГ

Александр Гравит... in Embedded Group
хорошо. на уровне файла ограничивает. умыл.
сменим локацию. теперь static переменная внутри функции.
тут слово static влияет только на время жизни, а scope создается расположением, верно? или это просто совпадение / наложение обычного правила - приватные переменные видны только внутри функций.
источник

VO

Vyacheslav Olkhovche... in Embedded Group
Да
источник

АГ

Александр Гравит... in Embedded Group
это может быть наложением двух одинаковых правил - они оба работают одинаково!
источник

АГ

Александр Гравит... in Embedded Group
эта мысль раньше мне не приходила)
источник

АД

Александр Д... in Embedded Group
scope будет локальным, но переменная будет храниться не на стеке, так что можно будет достать её адрес и изменять вне скоупа.
источник

АГ

Александр Гравит... in Embedded Group
выводы ясны. я о причине по которой она будет локальной. это не обязательно "старое" правило - "переменные внутри функции скрыты" это так же правило "static переменные ограничены областью  видимости блока в котором определены"
источник

АГ

Александр Гравит... in Embedded Group
пересечение двух множеств.. вернее наложение
источник

АД

Александр Д... in Embedded Group
Тут скорее наложение олдскульного погромирования, когда ключевые слова несли действительный смысл, куды класть в памяти переменную(осталось в явном виде в аттрибутах at_address и прочих) и формальных ограничений, чтобы не выстрелить в ногу, из той же серии, что и const, extern, public, private(если говорить о плюсах) и тд. По крайней мере мне это так видится.
источник

АГ

Александр Гравит... in Embedded Group
я вот ща проверил. публичные переменные видно и без extern во внешнем мире. так че тогда их используют
источник

АД

Александр Д... in Embedded Group
Для читабельности же
источник

A🐱

Andrew 🐱 [войсы не с... in Embedded Group
Если собираешь в один объектный файл - да. Если линкуешь разные то нет
источник

АГ

Александр Гравит... in Embedded Group
я обычно прячу локальные внутри c файла и они в хедере не фигурируют
источник

АГ

Александр Гравит... in Embedded Group
или если разрослось - в специальном "локальном" хедере с пометкой в названии
источник

АД

Александр Д... in Embedded Group
ну вот, если ты в другом файле сделаешь extern тех "локальных", они будут видны
источник

АГ

Александр Гравит... in Embedded Group
это да. но по хорошему, лучше таких усложнений избегать по возможности?
источник

АГ

Александр Гравит... in Embedded Group
или так гибче можно scope настроить
источник

АД

Александр Д... in Embedded Group
зависит от определения "усложнений"=)
источник

АД

Александр Д... in Embedded Group
Как говорится, тебе дали инструментарий, а использовать его или нет в данном конкретном случае - дело твое.
источник