Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Статические переменные. 2 на 1 |
Автор: OpenMan 23.8.2010, 13:11 | ||||
Есть мой проект в котором есть захаркоденный размер окна, который объявлен как константа в отдельном юните. Пришло время сделать так, чтобы размер окна менялся 1 раз за работу программы. попытался сделать его как static int. Фигня вот в чем:
Теперь если это вызывать из формы
то очевидно, что fa*gg - это одно, а returnMulty() - это другое. Другими словами для формы одни статические переменные, а для returnMulty() другие переменные. Хочу, чтобы было как в java, каждая статическая переменная имела единственный экземпляр. Как быть и что я не так делаю? |
Автор: Леопольд 23.8.2010, 13:28 |
В С++ слово static, (применительно к глобальным переменным и функциям) означает internal linkage. Может стоит выучить азы языка? |
Автор: OpenMan 23.8.2010, 14:41 |
Всё это я когда-то знал или так думал. Но немного позабыл. Учить все сначала - не вариант. Это локальная проблема. Как я понял с Ваших слов, все так и должно быть, как оно и работает. Не удобно конечно, но ладно. Как обойти эту шнягу? Должно же быть разумное средство и в С++. Как сделать изменяемую константу (псевдоконстанту)? Чтобы её изменение в одном юните приводило к изменению во всех других юнитах? |
Автор: Леопольд 23.8.2010, 15:28 |
OpenMan, надо заменить static на extern в заголовочном файле без инициализации (это будет объявление). В одном из cpp/c файлов надо определить эту переменную без слова static с инициализацией. |
Автор: mes 23.8.2010, 17:02 |
![]() ![]() |
Автор: OpenMan 23.8.2010, 17:05 |
Пасибо. Помогло. |
Автор: Леопольд 23.8.2010, 17:20 |
mes, спасибо, поправил. Издержки печати вслепую... ![]() |