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

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

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

Показать сообщение отдельно
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11823 / 6802 / 769
Регистрация: 27.09.2012
Сообщений: 16,870
Записей в блоге: 2
Завершенные тесты: 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.
 
Текущее время: 10:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru