Re: Стадии сборки проекта - почему это важно (на примере)
От: rg45 СССР  
Дата: 10.07.23 06:20
Оценка:
Здравствуйте, Shmj, Вы писали:

S>C C++, как оказалось, это критически важно и без этого даже не поймешь почему не работает прога. Думал хватит понимания что есть 3 стадии:


S>1. Препроцессор — раскрывает #include, #define, #if и пр.

S>2. Сам компилятор для каждого файла создает o-файл.
S>3. Линкер собирает все в единую библиотеку или exe-файл.

S>Оказалось что этого не достаточно, что видно из примера. Сейчас привожу максимально упрощенный пример, он из 3 файлов:


S>Вопрос: почему если раскомментировать контруктор по умолчанию //BaseClass() {} — оно перестает компилироваться? Оказывается без понимания стадий сборки не поймешь этого. Тут чел. приводил стадии трансляции, возможно с этим тоже связано.


S>Честно сказать, даже доведя до мин. примера (общими силами), я не до конца понимаю почему возникает ошибка компиляции при явном консрукторе. Примерно так — если сборщик видит явный конструктор, то он уже не ищет реализацию класса DerivedClass а просто сразу отрабатывает assert. А вот если конструктор не указать явно, то почему assert не отрабатывает?


S>Вот положа руку на сердце — вы понимаете логику сбоки в этом случае?


А что тут понимать, тут просто все как угол двери. Но сначала мне бы хотелось увидеть твои комментарии по поводу "Оказалось что этого не достаточно, что видно из примера". Почему знаний о трех фазах трансляции не достаточно и каким образом пример это демонстрирует?
--
Справедливость выше закона. А человечность выше справедливости.
Отредактировано 10.07.2023 6:35 rg45 . Предыдущая версия . Еще …
Отредактировано 10.07.2023 6:26 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.