Форум программистов, компьютерный форум CyberForum.ru

extern - C++

Восстановить пароль Регистрация
 
Laix
1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 64
25.11.2013, 18:18     extern #1
Собственно как правильно пользоваться такой штукой?
1. Где нужно использовать:
1) только в заголовочном файле
2) только в исходном файле с подключаемым заголовочным( то есть в 1) без extern )
3) в обоих файла?

2. можно ли переопределить переменную в исходном файле?(дурацкий вопрос, но все же)

3. имеются 5 глобальных переменных в файле myclasses.h. используются они в myclasses.cpp и в widget.cpp.
стрелкой показано "зависит от".
что делать если ругается на "myclasses.obj:-1: ошибка: LNK2005: *одна_из_переменных* уже определен в widget.obj" ?)
на все 5 переменных из myclasses.h.
Миниатюры
extern  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newbie666
Заблокирован
25.11.2013, 18:24     extern #2
Цитата Сообщение от Laix Посмотреть сообщение
только в исходном файле с подключаемым заголовочным
это верно
0x10
25.11.2013, 18:44
  #3

Не по теме:

Цитата Сообщение от Laix Посмотреть сообщение
имеются 5 глобальных переменных в файле myclasses.h.
...
что делать ...
Не использовать глобальные переменные.

Laix
1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 64
25.11.2013, 19:09  [ТС]     extern #4
Цитата Сообщение от 0x10 Посмотреть сообщение

Не по теме:


Не использовать глобальные переменные.

хм... а если их через мое пространство имен сделать, они ведь не будут считаться глобальными? потребуется ли писать extern в исполняемых файлах?
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
25.11.2013, 19:13     extern #5
Цитата Сообщение от Laix Посмотреть сообщение
а если их через мое пространство имен сделать, они ведь не будут считаться глобальными?
Пространства имен - для разрешения конфликтов имен. Область видимости переменной все равно остается глобальной.
Избавиться от глобалок не так трудно. Зато проблем после этого будет значительно меньше.
Matan!
13 / 13 / 1
Регистрация: 31.05.2013
Сообщений: 208
Записей в блоге: 1
Завершенные тесты: 1
25.11.2013, 19:15     extern #6
Думаю,достаточно написать другой файл,подключить его и использовать extern,если не найдёт.Действительно,от глобальных переменных лучше отказаться...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2013, 19:23     extern
Еще ссылки по теме:

C++ что такое extern?
C++ Некоректный вывод переменной extern
C++ Использование extern с функциями

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Laix
1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 64
25.11.2013, 19:23  [ТС]     extern #7
Цитата Сообщение от newbie666 Посмотреть сообщение
это верно
а почему так нельзя?
файл x.h:
extern int xxx; //объвляем

файл x.cpp:
int xxx; //определяем

в остальных файлах —

#include "x.h"
Yandex
Объявления
25.11.2013, 19:23     extern
Ответ Создать тему
Опции темы

Текущее время: 20:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru