|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
21.12.2016, 13:22 | #1 |
Люблю жизнь
Форумчанин
Регистрация: 01.12.2009
Сообщений: 193
|
Если в основном файле проекта (где есть функция main) есть #include "file.hpp", и в файле file.cpp есть #include "file.hpp", то как компилятор узнает, что нам нужен файл file.cpp?
Вопрос по заголовочным файлам от новичка в C++. Если в основном файле проекта (где есть функция main) есть #include "file.hpp", и в файле file.cpp есть #include "file.hpp", то как компилятор узнаЁт, что нам нужен файл file.cpp? Он ведь нигде не прописан в коде.
И второй вопрос: если заголовочный файл file.hpp подключается дважды в разные файлы .cpp, то необходимо ли использовать #pragma once? (или #ifndef...)
Не стыдно не уметь, стыдно не учиться.
Последний раз редактировалось Андрей 93; 21.12.2016 в 15:53. Причина: узнает!=узнаёт |
21.12.2016, 13:31 | #2 | ||
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
Цитата:
Цитата:
|
||
21.12.2016, 13:37 | #3 | |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Цитата:
Компилятор указанные .cpp и компилирует. Если бы вы использовали не IDE, а запускали GCC/MinGW из командной строки/Makefile, то этого вопроса не было бы Ну и про линкер/этапы компиляции почитать. http://stackoverflow.com/a/18777608/964478
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 21.12.2016 в 13:45. |
|
21.12.2016, 15:25 | #4 | |
Люблю жизнь
Форумчанин
Регистрация: 01.12.2009
Сообщений: 193
|
Цитата:
Если я включу в файл main.cpp не sm_unit.hpp, a sm_unit.cpp, ничего не меняется. Всё отлично компилируется, и как по мне - даже логичнее выглядит
Не стыдно не уметь, стыдно не учиться.
Последний раз редактировалось Андрей 93; 21.12.2016 в 15:32. |
|
21.12.2016, 15:33 | #5 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Сами в проект добавляются? Может еще и код у вас сам пишется?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
21.12.2016, 15:37 | #6 |
Люблю жизнь
Форумчанин
Регистрация: 01.12.2009
Сообщений: 193
|
Сами взгляните. В main.cpp подключен sm_unit.hpp, но не sm_unit.cpp
Не стыдно не уметь, стыдно не учиться.
|
21.12.2016, 15:40 | #7 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Причем тут .срр?
Смотрите файл проекта. Код:
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
21.12.2016, 15:50 | #8 |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
Компилятору чхать. Он оставит это на совесть линкера.
Файлы компилируются отдельно. Затем получившиеся объектники, библиотеки, пихаются на вход линкеру и тот уже разруливает что к чему. Ознакомьтесь подробнее с процессом сборки. Эта тема явно не для одного форумного поста. А, судя по Вашим вопросам, объяснять нужно с самого нуля. Хотя, если бы Вы собирали приложение не тыкая кнопки в IDE, а используя простую консольку, то всё было бы понятно уже с первых многофайловых проектов. Последний раз редактировалось Croessmah; 21.12.2016 в 15:54. |
21.12.2016, 15:52 | #9 |
Люблю жизнь
Форумчанин
Регистрация: 01.12.2009
Сообщений: 193
|
Что-то я запутался совсем. Если удалить эту строку из файла проекта, то ничего не изменится. И что такое вообще этот файл проекта, с чем его едят?
Прошу понять меня правильно, я хочу знать механизмы, как это всё работает, а не слепо действовать по шаблонам
Не стыдно не уметь, стыдно не учиться.
|
21.12.2016, 15:55 | #10 | ||
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
Цитата:
Цитата:
cl /MT /O2 ... .dfsd.c sdf.c dd.c /I ddfdfsds link /nologo /PGO /dfs dfsd.o ... |
||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
C1083: Cannot open include file: 'd3dx9.h': No such file or directory | CrowleyNoob | Общие вопросы C/C++ | 15 | 18.09.2016 21:55 |
visual studio не видит заголовочный файл, хотя он есть (fatal error C1083: Cannot open include file: 'GL/glut.h': No such file or | sersheg | Помощь студентам | 0 | 21.10.2013 13:04 |
В чём разница между unit, header file, cpp file? | TwiX | Общие вопросы C/C++ | 6 | 29.04.2012 19:49 |
Exception in thread "main" java.lang.ClassFormatError: Truncated class file | Pti44ka | Общие вопросы по Java, Java SE, Kotlin | 1 | 19.11.2009 19:16 |
#include "anstream.hpp" | Stefaniya | Общие вопросы C/C++ | 0 | 19.05.2009 02:40 |