Помощь - Поиск - Пользователи - Календарь
Полная версия: Библиотека
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
sheka
Почему нельзя просто добавить библиотеку описав ее
так (Показать/Скрыть)
?
Logs (Показать/Скрыть)

ConsoleLib.cpp (Показать/Скрыть)

ConsoleLib.h (Показать/Скрыть)
volvo
Ну, описал, в смысле, добавил H-файл, дальше что? Хидер - он на то и хидер, что там хранятся только заголовки подпрограмм обычно (а сама библиотека может идти не в исходниках а в виде LIB-файла, например). То есть, ты сделал то, что необходимо компилятору, чтоб откомпилировать твой код, потому как из хидера компилятор знает, каковы прототипы функций, какие параметры должны передаваться в функцию, можно проверить, правильно ли ты передаешь, или нет. Слинковать программу без подключения cpp/lib или еще какого файла будет невозможно - линкер не найдет реализации функции, то есть, EXE-файл ты не получишь...
sheka
Прочел какую-то странную книжечку http://lib.ru/CPPHB/cpptut.txt в которой куча ответов на разные мои вопросы lol.gif . До этого их книгу я только по чистому си видел. Так вот, я понял, что #include просто "включает С++ный текст в программу", а *.h помогает определить совместимость типов.
Т.е. в программу надо добавить 2 такие строчки:
#include "ConsoleLib.h"
#include "ConsoleLib.cpp"
Но так как подключаемый файл срр один, то можно файл h и не подключать.
Правильно? wacko.gif
volvo
Цитата
Так вот, я понял, что #include просто "включает С++ный текст в программу", а *.h помогает определить совместимость типов.
Неправильно понял. Вот еще "грабли" С/С++ (это в продолжение темы об олимпиадах по программированию).

#include в любом случае вставляет содержимое файла в текст программы (т.е., считай, что вместо директивы #include <имя> у тебя стоит содержимое файла <имя>). А вот о том, что можно, а что нельзя подключать таким образом - разговор особый. Так подключаются только заголовочные *.H/*.HPP файлы. Ни в коем случае не подключай *.C/*.CPP файлы через #include.. Это может привести к совершенно непредсказуемым последствиям. Прими себе за правило: есть *.H/*.HPP - подключай include-ом. Есть *.C/*.CPP - добавляй в проект (в смысле, "Add to Project"). Разные C/CPP файлы должны компилироваться отдельно. А ты заставляешь компилятор считать, что у тебя есть один больщой CPP-файл. А внесешь в него исправления - что будет? Будет перекомпилироваться ВСЁ сразу. А если подключить к проекту два файла-исходника, то перекомпилируется только тот исходник, который изменялся, экономишь время компиляции. Да и вообще - дело не в экономии времени. Дело - в том, что нельзя делать балаган в программах - они не для этого написаны. Если в данном конкретном случае у тебя подключение обоих файлов решает проблему - это не значит, что такое решение правильное. Это плохой способ.

P.S. Страуструп - это, конечно, хорошо, но не для начинающего...
sheka
Прикольно, впервые создал проэкт)
Вроде само файлы *.о посоздавало и подключило.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.