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

Архитектура компоновки - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Тернарный оператор "?" http://www.cyberforum.ru/cpp-beginners/thread1787359.html
Добрый Вечер . Столкнулся с вопросом помогите понять хочу разобраться с ходом ее работы. #include <iostream> using namespace std; int main() { int a; a=0?a=1:a=2?a=3:a=4?a=5:a=6;
C++ В чем преимущество list над вектором? В чем преимущество list над вектором? http://www.cyberforum.ru/cpp-beginners/thread1787354.html
Неожиданное завершение программы на Windows C++
Вообщем такая беда, решал задачку с одного сайта, решал ее в облаке от Cloud9, там Ubuntu стоит. Все замечательно работает не придраться. При переносе в Windows(Пользуюсь CLion) программа неожиданно вылетает с ошибкой посреди выполнения своего кода. Сначала работала на Debug, а на Realese нет. Потом перестала работать в любом исполнении. Прошу кому не сложно, посмотреть опытным взглядом и ткнуть...
Нюансы использования оператора запятая или что такое UB и с чем его едят C++
Почему студия и ideone выдают разные значения для a и b? в студии выходит a = 10 , b = 10 в ideone a = 20, b =10 #include <iostream> int main() { int a;
C++ Сортировка массива: сначала расположить положительные, а потом - отрицательные элементы http://www.cyberforum.ru/cpp-beginners/thread1787335.html
Проверьте пожайлуста мое решение :) . Эффективен ли вообще такой подход? Задание: Преобразовать массив , так чтобы сначала располагались положительные эл-ты а потом отрицательные. (0-считать положительным) Мое решение: #include <iostream> using namespace std;
C++ Что делает cin.ignore(); Поясните мне, какое действие выполняет функция: cin.ignore(); Лучше на примере каком нибудь!(с комментариями) Может быть это что-то типа continue Добавлено через 3 минуты На этот вопрос меня натолкнула вот эта прога которую я нарыл в нэте! #include <iostream> using namespace std; подробнее

Показать сообщение отдельно
HelicopterK52
657 / 200 / 28
Регистрация: 27.07.2016
Сообщений: 475
Завершенные тесты: 1
29.07.2016, 20:37     Архитектура компоновки
Цитата Сообщение от dimansf Посмотреть сообщение
как устроена связь между заголовочником(.h) и файлом исполняемым (.сpp), на конкретном примере.
Вообще никак. Это разные файлы. Если Вы включаете заголовок, то его содержимое попадает в .cpp.

Цитата Сообщение от dimansf Посмотреть сообщение
Как заголовочник находит срр файл ?
В смысле?
Файлы будут отданы препроцессору, который, встретив include, добавит содержимое указанного файла, т.е.
после препроцессора .cpp станут такими (комменты в расчет не берем, они для ясности):
C++
1
2
3
4
5
6
7
8
9
//sum.cpp
//#include "sum.h"
//вместо инклуда подставится содержимое файла
 
int sum (int, int);
 
int sum(int a,int b) {
 return a+b;
}
C++
1
2
3
4
5
6
7
8
//main.cpp
//#include sum.h
//сюда также подставится содержимое файла sum.h
 
int sum (int, int);
int main () {
   return sum(5,6);
}
затем каждая из этих единиц трансляции будет скомпилирована в отдельные объектные файлы, те в свою очередь попадут на вход линкеру (компоновщику), и он уже найдет что и где определено.
Цитата Сообщение от dimansf Посмотреть сообщение
Что будет если два файла срр с одинаковыми реализациями (с одинаковыми сигнатурами функций) будут подключать один и тот же заголовочник т.е.
Если Вы их оба скормите линкеру, то он выдаст ошибку о множественном определении символа.
Цитата Сообщение от dimansf Посмотреть сообщение
Если я перенесу файлы sum.срр и sum.h в любую другую директорию и подключу в main(которая находится в новой директории) то будет работать?
Не понятно что и как, но ежели пути все правильные, то будет.
Цитата Сообщение от dimansf Посмотреть сообщение
4) .lib(.dll) - это cpp+h ?
Нет. Есть статические и динамические библиотеки. Думаю, сами нагуглите, т.к. писать здесь целую лекцию врядли нужно.
Цитата Сообщение от dimansf Посмотреть сообщение
Где тогда находится реализация одноименного заголочника?
Ну Вам же предоставляются библиотеки с их реализациями.
Цитата Сообщение от dimansf Посмотреть сообщение
и как еще можно поизвращаться с заголовочником + исполняемым файлом.
Для начала, попробуйте собрать статическую библиотеку, а затем подцепить её к своему "проекту".
Узнаете немного новой информации.
Вообще Вам нужно погуглить на тему "Раздельная компиляция".

Добавлено через 2 минуты
Вот, правда для Linux и C, но смысл и принципы везде одинаковые: http://www.opennet.ru/docs/RUS/zlp/
Вам нужны первые три главы.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru