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

Как собрать файлы в кучу? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Маленький (команд на 10) интерпретатор на C++ http://www.cyberforum.ru/cpp-beginners/thread1191499.html
Здравствуйте! Решил для общего развития написать маленький (команд на 10) интерпретатор. Идея - вводите команду, вам выводится отчет о выполнении (или ошибке), дальше еще команда и т.д. Потом пишете...
C++ Установить бит если 2 значения совпадают Как правильно устанавливать N-бит если 2 значения не совпадают: Например есть задача - установить 7бит, если значения a и b не совпадают. Всё что пришло в голову: unsigned a = 4; unsigned b... http://www.cyberforum.ru/cpp-beginners/thread1191481.html
C++ Отношения между классами, не наследование
Вопрос в следующем нужно показать взаимосвязь между классами на примере трех классов: пользователь, клиент, сервер, то есть между классом пользователь и клиент должна быть слабая связь, а между...
Шаблоны C++
Здравствуйте! Помогите пожалуйста сделать шаблоны структур и функций! Заранее благодарен... Очень нужна Ваша помощь... #include <iostream> #include <windows.h> #include <fstream> #include...
C++ Добавить события нажатия клавиш http://www.cyberforum.ru/cpp-beginners/thread1191428.html
Всем привет! Я пишу простенький тетрис Подскажите как добавить события нажатия клавиш в программу? #include <stdio.h> #include <time.h> #include <conio.h> #include <stdlib.h> #include...
C++ Замена одной буквы на две Написать программу, которая заменяет в указанном (введенном с клавиатуры) слове все буквы "a" на сочетание "ky" Вот написал такое, но ни как не могу понять как сдвинуть ячейки, что бы вторая буква... подробнее

Показать сообщение отдельно
Croessmah
Эксперт CЭксперт С++
13419 / 7573 / 855
Регистрация: 27.09.2012
Сообщений: 18,643
Записей в блоге: 3
Завершенные тесты: 1
28.05.2014, 21:33
Цитата Сообщение от Spirit370 Посмотреть сообщение
Что это extern делает?
показывает, что переменная имеет внешнюю(external) линковку
Цитата Сообщение от Spirit370 Посмотреть сообщение
А какой смысл тогда в этом
Если просто, то extern указывает что сущность объявлена где-то в другом модуле.

при компиляции, модули компилируются отдельно(раздельная компиляция) и ничего не знают друг о друге.

Соответственно, когда компилируется файл 1.cpp, он ничего не знает о переменных и функциях в файле 2.cpp.
Поэтому, если у Вас в файле 2.cpp есть переменная X, то она будет не видна при компиляции файла 1.cpp и её нельзя будет там использовать, ведь компилятор выдаст ошибку, сославшись на необъявленный идентификатор с именем X.
Выход вроде бы очевиден - объявить переменную в файле 1.cpp
C++
1
type X ;
тогда он компилируется нормально, файл 2.cpp тоже компилируется без проблем, но на стадии линковки будет ошибка, т.к. при компиляции в каждом файле создалась переменная X и теперь у нас две переменных и линкер не знает какую выбрать.
Но, если объявить переменную X в файле 1.cpp как
C++
1
extern type X ;
то это "скажет" компилятору, что такая переменная определена где-то в другом месте и не нужно тут её создавать, так что если встретишь идентификатор с именем X, то знай, что это переменная такого то типа. Тебе этого достаточно для работы, а с местоположением данной переменной разберется линкер.

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