45 / 21 / 6
Регистрация: 28.02.2013
Сообщений: 194
|
||||||||||||||||
1 | ||||||||||||||||
Static только в пределах одного файла?16.09.2015, 12:41. Показов 1295. Ответов 12
Метки нет (Все метки)
Решил что могу описать переменную в заголовочном файле, так, чтоб была переменная и была одна и была видна во всей программе из любой функции. static. работает замечательно, но только пока вся программа в одном файле.
А так: Foo.h
0
|
16.09.2015, 12:41 | |
Ответы с готовыми решениями:
12
Копирование по маске из одного места в другое в пределах каждой строки файла Переписать из одного файла в другой файл только четные числа Программа выводит данные только одного текстового файла из трех Плагин Gulp-watch работает только для одного файла |
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|||||||||||
16.09.2015, 12:46 | 2 | ||||||||||
nefton, static указывает, что переменная будет доступна в модули трансляции, здесь два модуля трансляции, один Foo, второй main, поэтому и выводит log_level = 0. Вообще лучше конечно сделать не глобальную переменную, а какую-нибудь функцию или хотя бы запихнуть в namespace, но можно и через extern.
0
|
45 / 21 / 6
Регистрация: 28.02.2013
Сообщений: 194
|
|
16.09.2015, 12:51 [ТС] | 3 |
ForEveR, без static ругается что не может слинковать майн и что переменная уже определена в Foo.obj
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
16.09.2015, 12:53 | 4 |
nefton, Верно. Нужен спецификатор extern. Я исправил свой ответ.
0
|
45 / 21 / 6
Регистрация: 28.02.2013
Сообщений: 194
|
|
16.09.2015, 13:02 [ТС] | 5 |
ForEveR, не получается. (
какие должны быть 3 файла чтоб я описал переменную в Foo.h, изменил её в main.cpp и после изменения она вывелась в консоль из Foo() (Foo.cpp)
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||||||||||||
16.09.2015, 13:06 | 6 | |||||||||||||||
Сообщение было отмечено nefton как решение
Решение
Foo.h
2
|
8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
16.09.2015, 19:35 | 7 | |||||
вы не правильно его используете.
вам нужно такое:
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
16.09.2015, 19:40 | 8 |
hoggy,
Ну тут зависит. Если нужна именно переменная (да, такое бывает), можно использовать. Но то что лучше организовать функцию бесспорно.
0
|
8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
16.09.2015, 20:09 | 9 | |||||
бывает, что нужно организовать имя.
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
16.09.2015, 21:54 | 10 |
hoggy, Да, так симпатичнее. Но мы например юзаем extern, только в одном месте, для большого кол-ва переменных, которые используются потом по всему коду и не паримся особо по этому поводу. Писать под каждую нужную две функции... Перебор с моей точки зрения. Но все от ситуации конечно зависит.
0
|
8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
16.09.2015, 22:09 | 11 |
до main жизни нет?
ваш логгер нельзя вызвать, например, что бы залоггировать конструирование статического объекта? Добавлено через 1 минуту сингелтонов не бывает много. поскольку обычно они выступают в качестве каких то подсистем. так что не напрягает. но те, что имеются, обычно хочется использовать с "цивилизованными удобствами". один раз напишим превентивно безопасный код, а потом много много раз будем наслаждаться удобствами.
0
|
ForEveR
|
16.09.2015, 23:41
#12
|
Не по теме: hoggy, Это не логгер. Это некие объекты определенного класса, каждый из которых инициализируется загрузкой из БД, БД инициализируется только после считывания конфига, т.е. определенно после начала main, ну как-то так, это удобнее, нежели писать функции. Сделано так, через глобальные объекты, чтобы меньше тратить время постоянную загрузку/поиск, когда нужно использовать точно определенный объект. Для каждой задачи свое решение так-то и в нашем случае extern переменная смотрится более уместно с моей точки зрения.
0
|
8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
17.09.2015, 01:08 | 13 |
0
|
17.09.2015, 01:08 | |
17.09.2015, 01:08 | |
Помогаю со студенческими работами здесь
13
Как установить выбор только одного заранее заданного файла в OpenDialog? Переписать из одного файла в другой только третью и четвертую строки, содержащие пробелы Вывести на экран только те строки исходного файла, которые состоят из одного слова Скопировать из одного файла в другой только натуральные четные числа и найти их сумму Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |