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

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

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

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

13.08.2014, 10:13. Просмотров 468. Ответов 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++
Дорогие Форумчане! Подскажите пожалуйста, как работает нижеследующий код для генерации случайных чисел: random=rand()%(b+1-a)+a; ...

Как работает функция "test" в приведенном коде - C++
Объясните как работает функция test #include &lt;conio.h&gt; #include &lt;iostream.h&gt; #include &lt;limits.h&gt; int test(long int a) ...

Как работает cin.ignore(), именно в том случае, когда он написан без параметров? - C++
Объясните, пожалуйста, как работает cin.ignore(), именно в том случае, когда написан без параметров заранее спасибо!

Не работает сортировка в приведенном коде - C++
что тут не так? #include &lt;iostream&gt; using namespace std; void en(int* a, int size); void ex(int* a, int size); void...

Не правильно работает if в приведенном коде - C++
Есть функция которая считает начало слова в строке(a - массив строк, b - массив разделителей).Столкнулся с проблемой что не смотря на то...

Как влияет inline и обертка(#ifndef #define #endif) .h файла на компоновщик. - C++
Есть файл Point.h: #ifndef POINT_GUARD #define POINT_GUARD ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
0x10
2460 / 1632 / 238
Регистрация: 24.11.2012
Сообщений: 4,015
13.08.2014, 10:21 #2
Цитата Сообщение от BESSON_off Посмотреть сообщение
Каким образом создается файл?
Какой файл?
Цитата Сообщение от BESSON_off Посмотреть сообщение
Я ведь включаю в main.cpp файл Class.h?
Да. А в чем конкретно тут вопрос?
zss
Модератор
Эксперт С++
6365 / 5929 / 1923
Регистрация: 18.12.2011
Сообщений: 15,237
Завершенные тесты: 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
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 344
13.08.2014, 13:42  [ТС] #4
Разобрался.
Вопрос бы в том, каким образом определяются в программе разные единицы трансляции.
zss
Модератор
Эксперт С++
6365 / 5929 / 1923
Регистрация: 18.12.2011
Сообщений: 15,237
Завершенные тесты: 1
13.08.2014, 15:02 #5
каждый подключенный к проекту cpp файл является отдельной единицей трансляции.
Когда они все откомпилированы, то компоновщик выполняет сборку начиная с int main()
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.08.2014, 15:02
Привет! Вот еще темы с ответами:

Каким образом работает swap в приведенном коде? - C++
Каким образом работает swap в коде ниже? #include&lt;list&gt; #include&lt;memory&gt; #include&lt;utility&gt; struct test { ...

More C++ Idioms/Execute-Around Pointer как в этом случае работает "operator->()" - C++
Читаю сейчас More C++ Idioms Дошел до Execute-Around Pointer и впал в ступор. Есть код // ideone.com/R728xo #include &lt;iostream&gt; ...

Теория. Почему в данном случае copy() не работает после reserve(), но работает после resize()? - C++
Есть такая функция: void Array::SetStartIndexes(sz3_Arr_t *array) { start_index.reserve(array-&gt;size()); ...

Как работает процессор на физическом уровне? - Микропроцессоры
Всем привет. Понимаю, что процессор состоит из колоссального количества транзисторов, имеющих ничтожно малые размеры измеряемые...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.08.2014, 15:02
Ответ Создать тему
Опции темы

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