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

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

Войти
Регистрация
Восстановить пароль
 
BESSON_off
 Аватар для BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 338
#1

Как на физическом уровне работает компоновщик в приведенном случае - C++

13.08.2014, 10:13. Просмотров 429. Ответов 4
Метки нет (Все метки)

Всем привет!
Уважаемые форумчане объясните мне, как, на физическом уровне, работает компоновщик в этом случае:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//файл Class.h
class Test {
public:
    Test();
    ~Test();
};
 
//файл Class.cpp
Test::Test() {cerr << "Test::Test()\n";}
Test::~Test() {cerr << "Test::~Test()\n";}
 
Test object;
 
//файл main.cpp
#include "Class.h
 
int main() {
cerr << "In main\n";
}
 
//Вывод:
Test::Test()
In main
Test::~Test()
Каким образом создается файл? Я ведь включаю в main.cpp файл Class.h?
По каким правилам это происходит?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2014, 10:13     Как на физическом уровне работает компоновщик в приведенном случае
Посмотрите здесь:

C++ Как додать два числа на битовом уровне С++
C++ Как влияет inline и обертка(#ifndef #define #endif) .h файла на компоновщик.
C++ Не работает сортировка в приведенном коде
Компоновщик о ликовка программы это одно и тоже? C++
C++ Как работает функция "test" в приведенном коде
C++ Не правильно работает if в приведенном коде
Как работает генерация случайных чисел в приведенном коде C++
Возможно ли подгрузить библиотеку так, чтоб компоновщик подгружал функции из основной программы? C++
C++ Каким образом работает swap в приведенном коде?
Шаблонный класс от шаблонного класса, ругается компоновщик C++
C++ Как увеличить число на битовом уровне?
C++ Как работает cin.ignore(), именно в том случае, когда он написан без параметров?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2449 / 1621 / 238
Регистрация: 24.11.2012
Сообщений: 3,991
13.08.2014, 10:21     Как на физическом уровне работает компоновщик в приведенном случае #2
Цитата Сообщение от BESSON_off Посмотреть сообщение
Каким образом создается файл?
Какой файл?
Цитата Сообщение от BESSON_off Посмотреть сообщение
Я ведь включаю в main.cpp файл Class.h?
Да. А в чем конкретно тут вопрос?
zss
Модератор
Эксперт С++
 Аватар для zss
6117 / 5720 / 1850
Регистрация: 18.12.2011
Сообщений: 14,623
Завершенные тесты: 1
13.08.2014, 10:41     Как на физическом уровне работает компоновщик в приведенном случае #3
#include просто включает текст h файла в компилируемый файл.
Вопрос, думаю, не о компоновке, а о последовательности исполнения.
В данном случае порядок такой:

1. Создание глобального объекта object
2. Выполнение кода функции main
3. Удаление глобального объекта object

Кстати, чтобы увидеть переменную object в main, нужно добавить в h файл ее объявление
C++
1
extern Test object;
BESSON_off
 Аватар для BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 338
13.08.2014, 13:42  [ТС]     Как на физическом уровне работает компоновщик в приведенном случае #4
Разобрался.
Вопрос бы в том, каким образом определяются в программе разные единицы трансляции.
zss
Модератор
Эксперт С++
 Аватар для zss
6117 / 5720 / 1850
Регистрация: 18.12.2011
Сообщений: 14,623
Завершенные тесты: 1
13.08.2014, 15:02     Как на физическом уровне работает компоновщик в приведенном случае #5
каждый подключенный к проекту cpp файл является отдельной единицей трансляции.
Когда они все откомпилированы, то компоновщик выполняет сборку начиная с int main()
Yandex
Объявления
13.08.2014, 15:02     Как на физическом уровне работает компоновщик в приведенном случае
Ответ Создать тему
Опции темы

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