-
- Нет, объявление - это когда указывается тип и имя, но ничего ему не
присваивается. В заголовочном файле не делается объявление с
присвоением значения. И до присвоения значения, компилятор просто
имеет ввиду, что такая переменная должна быть ему доступна, но не
выделяет для неё памяти, пока она не понадобится. P.S. определения
подстановок #define и определения типов, хотя и являются
определениями, но не приводят к выделению памяти, так как относятся
сугубо к Nikolay_Po(14 знак., 11.03.2022 10:15)
- Э, нее! Когда указывается тип и имя, но ничего не присваивается -
память тоже выделяется. Почему-то уверен, что "int a;" в хедере
приведет к выделению памяти. - Argon(11.03.2022 10:20)
- У современных компиляторов гарантированно не так, при отличной от
нуля оптимизации. Пока не случится обращения к этой переменной,
вызывающее "побочные эффекты" Nikolay_Po(291 знак., 11.03.2022 10:33, ссылка)
- Так значит, можно такое в хедере? Argon(32 знак., 11.03.2022 10:52)
- Без присвоения - можно (но это не решает пробелмы ТС). Обычно, я
делаю только глобальные внешние объявления. Локальные переменные
остаются просто в коде *.c, без упоминаний в заголовках. Например: Nikolay_Po(1014 знак., 11.03.2022 11:10)
- Противоречие в терминах: стандартная форма объявления: тип список_переменных VLLV(1 знак., 11.03.2022 11:10, ссылка)
- В чём противоречие? Пока переменным не присвоены значения, это не
определение. - Nikolay_Po(11.03.2022 11:11)
- Я не про определение, я про объявление. - VLLV(11.03.2022 11:14)
- В чём противоречие? Пока переменным не присвоены значения, это не
определение. - Nikolay_Po(11.03.2022 11:11)
- Противоречие в терминах: стандартная форма объявления: тип список_переменных VLLV(1 знак., 11.03.2022 11:10, ссылка)
- Без присвоения - можно (но это не решает пробелмы ТС). Обычно, я
делаю только глобальные внешние объявления. Локальные переменные
остаются просто в коде *.c, без упоминаний в заголовках. Например: Nikolay_Po(1014 знак., 11.03.2022 11:10)
- Так значит, можно такое в хедере? Argon(32 знак., 11.03.2022 10:52)
- У современных компиляторов гарантированно не так, при отличной от
нуля оптимизации. Пока не случится обращения к этой переменной,
вызывающее "побочные эффекты" Nikolay_Po(291 знак., 11.03.2022 10:33, ссылка)
- Э, нее! Когда указывается тип и имя, но ничего не присваивается -
память тоже выделяется. Почему-то уверен, что "int a;" в хедере
приведет к выделению памяти. - Argon(11.03.2022 10:20)
- Казалось бы, грех путаться в терминологии, но даже авторы книжек
по-разному называют сущности. Что-то подобное встретилось недавно:
в одной книге оператор, в другой - инструкция. - Argon(11.03.2022 10:10)
- По сути, это разные вещи. "/" (деление) - это тоже оператор.
Оператор - что делать, Инструкция - как делать. И при компиляции,
один оператор может приводить к использованию нескольких
инструкций. - Nikolay_Po(11.03.2022 10:13)
- я может путаю насчет оператора и инструкции, но тем не менее был факт разного наименования одного и того же - Argon(11.03.2022 10:16)
- По сути, это разные вещи. "/" (деление) - это тоже оператор.
Оператор - что делать, Инструкция - как делать. И при компиляции,
один оператор может приводить к использованию нескольких
инструкций. - Nikolay_Po(11.03.2022 10:13)
- Нет, объявление - это когда указывается тип и имя, но ничего ему не
присваивается. В заголовочном файле не делается объявление с
присвоением значения. И до присвоения значения, компилятор просто
имеет ввиду, что такая переменная должна быть ему доступна, но не
выделяет для неё памяти, пока она не понадобится. P.S. определения
подстановок #define и определения типов, хотя и являются
определениями, но не приводят к выделению памяти, так как относятся
сугубо к Nikolay_Po(14 знак., 11.03.2022 10:15)