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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
#1

Внутренние и внешние связи - C++

18.02.2014, 11:37. Просмотров 717. Ответов 6
Метки нет (Все метки)

C++
1
2
3
4
5
int externalint=5;
const int j=10;
int main()
{
}
В книге написано,что переменная externalint имеет внешнюю связь,а константа-внутреннюю. Собсно,мне не понятно,почему константа имеет внутреннюю связь,если она объявлена как глобальная.
И ещё:
C++
1
2
3
4
5
6
7
8
9
void function()
{
extern int b;
}
 
int main()
{   
    b=1;
}
Компилятор ругается на необьявленную переменную,хотя если я правильно понял,то приставка extern даёт переменной b из function внешнюю связь.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2014, 11:37     Внутренние и внешние связи
Посмотрите здесь:

Выбрать, затем вывести четырехзначное число, у которого две внутренние цифры постоянны - C++
Здравствуйте. Нужно выбрать, затем вывести четырехзначное число, у которого две внутренние цифры постоянны, а две остальные меняются. ...

внешние функции - C++
Всем привет! Сижу,туплю: В задании написано: "тип данных является струкурой с необходимыми полями, а операции реализуются как...

Внешние функции в классе - C++
del

Подскажите про внешние зависимости - C++
Всем привет. Никак не могу подключить к проекту внешние зависимости. Собираю консольное приложение в VS6. Прописываю пути в настройках...

Шаблоны: неразрешенные внешние элементы - C++
Пишу шаблонный класс-массив. Появилась такая проблема. Если инициализировать конструктор и дружественные перегрузки операторов в самом...

Неразрешенные внешние символы/элементы - C++
появились такие ошибки error LNK1120: неразрешенных внешних элементов: 1 error LNK2019: ссылка на неразрешенный внешний символ...

Библиотека fltk и неразрешенные внешние элементы - C++
Здравствуйте. Уже не знаю, куда обратится, пишу сюда. Извиняюсь, если вопрос не новый, но думаю что не тривиальный. Вобщем читаю книгу...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
5593 / 2627 / 240
Регистрация: 01.11.2011
Сообщений: 6,461
Завершенные тесты: 1
18.02.2014, 11:57     Внутренние и внешние связи #2
Ключевое слово extern говорит о том, что переменная объявлена где-то еще. Во втором вашем примере в функции main она не объявлена. Она сразу инициализируется.
C++
1
2
3
4
5
6
7
8
9
void function()
{
extern int b;
}
 
int main()
{   
    int b=1;
}
Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
18.02.2014, 11:58  [ТС]     Внутренние и внешние связи #3
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Ключевое слово extern говорит о том, что переменная объявлена где-то еще. Во втором вашем примере в функции main она не объявлена. Она сразу инициализируется.
Какой в этом смысл?Маяк для программиста?
SatanaXIII
Супер-модератор
Эксперт С++
5593 / 2627 / 240
Регистрация: 01.11.2011
Сообщений: 6,461
Завершенные тесты: 1
18.02.2014, 12:03     Внутренние и внешние связи #4
Смысл - использовать одну и ту же переменную в разных модулях.
Extrim88
50 / 50 / 11
Регистрация: 08.02.2013
Сообщений: 189
18.02.2014, 12:06     Внутренние и внешние связи #5
Цитата Сообщение от Игорюня Посмотреть сообщение
Собсно,мне не понятно,почему константа имеет внутреннюю связь,если она объявлена как глобальная.
Константы по-умолчанию имеют внутреннее связывание.
Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
18.02.2014, 12:18  [ТС]     Внутренние и внешние связи #6
Цитата Сообщение от Extrim88 Посмотреть сообщение
Константы по-умолчанию имеют внутреннее связывание.
То есть константу в моём примере не сможет использовать никакой блок?

Добавлено через 1 минуту
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Смысл - использовать одну и ту же переменную в разных модулях.
Что-то между глобальной и локальной переменной?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2014, 12:29     Внутренние и внешние связи
Еще ссылки по теме:

Как получить внешние параметры в ActiveX? - C++
День добрый всем! Есть у меня Activex-компонент. Он должен связываться с сервером и открывать указанный ему файл. Имя файла задаётся...

Внешние сортировки. Сортировка слиянием. Естественное слияние - C++
Пом-гите решить, заранее благодарен.)) Билет 9 1 .Внешние сортировки. Сортировка слиянием. Естественное слияние. 2 Решить...

Внешние сортировки. Сортировка слиянием. Простое слияние - C++
Пом-гите решить, заранее благодарен.)) Билет 8 1 .Внешние сортировки. Сортировка слиянием. Простое слияние. 2 Решить задачу: ...

Наследование классов(ошибка неразрешенные внешние символы) - C++
Добрый день! Реализую программу для решения СЛАУ методом Гаусса. Встрял на том, что компилятор выдает ошибку на использование...

Объединять классы и внешние функции в одной программе плохой тон программирования? - C++
Доброго времени суток! Преподаватель в институте задал определённую задачу, однако не определил разрешённые возможности. Сказал только -...


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

Или воспользуйтесь поиском по форуму:
SatanaXIII
Супер-модератор
Эксперт С++
5593 / 2627 / 240
Регистрация: 01.11.2011
Сообщений: 6,461
Завершенные тесты: 1
18.02.2014, 12:29     Внутренние и внешние связи #7
Игорюня, самый хороший пример для extern это как раз два разных модуля:
Unit1:
C++
1
2
3
4
5
#include Unit2
// Какой-то код
// ...
int b;
// Далее работа с b
Unit2:
C++
1
2
3
4
5
#include Unit1
// Какой-то код
// ...
extern int b;
// Далее работа с b
Вот чтобы в обоих модулях работать с одной и той же переменной, во-втором модуле она объявляется как extern. И тогда линковщик, встретив ее, не будет ругаться, и не будет выделена память под вторую переменную b, а просто произойдет их связь. И они будут считаться за одну и ту же.
Если же убрать модификатор extern из второго модуля, то это будут две совершенно разные переменные.
Yandex
Объявления
18.02.2014, 12:29     Внутренние и внешние связи
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru