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

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

Войти
Регистрация
Восстановить пароль
 
dimkaok
1 / 1 / 0
Регистрация: 06.03.2013
Сообщений: 128
#1

Библиотеки подключать в *.h или в *.cpp файлах? - C++

17.04.2013, 11:38. Просмотров 850. Ответов 5
Метки нет (Все метки)

Подскажите, где правильно подключать библиотеки: в хеадерах, или в cpp - файлах?
И есть-ли разница между тем, где подключать локальные файлы, а где стандартные (<iostream> и т.п.)

Например, я в хедере объявляю класс, а в cpp его определяю. В cpp есть std::cout, тогда где iostream подключать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2013, 11:38     Библиотеки подключать в *.h или в *.cpp файлах?
Посмотрите здесь:

Как создавать и подключать библиотеки? C++
Нужно ли к файлу .h подключать все заголовочные файлы, которые понадобятся в .cpp C++
CodeBlocks. Как правильно подключать библиотеки C++
Обращение к функциям С++, расположенным в других файлах *.cpp C++
Связка двух функций в разных .cpp файлах C++
C++ Как подключать библиотеки в VS 2012
C++ Шаблонная функция: в файле .h или .cpp
C++ Запуск стороннего cpp или exe файла
Описание функции шаблонного класса библиотеки в отдельном cpp-файле C++
Подскажите как правильно подключать библиотеки и решения. (функции уже определены в *.obj) C++
C++ Библиотеки в CPP. Ошибка компиляции | CPP
C++ Библиотеки cpp для junior

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2455 / 1627 / 238
Регистрация: 24.11.2012
Сообщений: 4,003
17.04.2013, 11:43     Библиотеки подключать в *.h или в *.cpp файлах? #2
1. Не библиотеки, а заголовочные файлы.
2. Подключать там, где необходимы.
3. Для системных заголовочных файлов и для сторонних библиотек - посмотрите на precompiled headers.
ValeryS
Модератор
6511 / 4977 / 460
Регистрация: 14.02.2011
Сообщений: 16,484
17.04.2013, 11:47     Библиотеки подключать в *.h или в *.cpp файлах? #3
Цитата Сообщение от dimkaok Посмотреть сообщение
Подскажите, где правильно подключать библиотеки:
Ты путаешь библиотеки как таковые и их заголовочные файлы
библиотеки подключает линкер и в тексте программы ты их явно не указываешь
(ну может быть, у VC есть #pragma comment например #pragma comment(lib,"ws2_32.lib"); )
а заголовочные файлы библиотек (*.h) подключай где они будут использоваться, чаще всего это cpp - файлы
Цитата Сообщение от dimkaok Посмотреть сообщение
Например, я в хедере объявляю класс, а в cpp его определяю. В cpp есть std::cout, тогда где iostream подключать?
если при объявлении класса есть хоть одна ссылка на std то лучше объявить его там
а лучше и там и там( сам потом не запутаешься) а компилятор лишнее выбросит
dimkaok
1 / 1 / 0
Регистрация: 06.03.2013
Сообщений: 128
17.04.2013, 12:00  [ТС]     Библиотеки подключать в *.h или в *.cpp файлах? #4
Да, точно, я заголовочные файлы имел ввиду.
Все-равно не очень понятно. Если не подключать <iostream> в обоих файлах, а подключить только в одном, то в каком из них лучше подключить:

C++
1
2
3
4
5
6
7
8
9
10
11
12
// Main.h
class CMain {
 
  public:
 
     void display ();
};
 
// Main.cpp
#include "Main.h"
void CMain::display ()
   { std::cout << "Hello" << std::endl; }
ValeryS
Модератор
6511 / 4977 / 460
Регистрация: 14.02.2011
Сообщений: 16,484
17.04.2013, 12:33     Библиотеки подключать в *.h или в *.cpp файлах? #5
// Main.h
ничего не использует из iostream
а Main.cpp использует
следовательно подключай в Main.cpp

#include ,грубо говоря, возьмет весь текст из подключаемого файла и вставит в твой листинг

например, в твоем примере перед компиляцией будет создан файл такого вида

C++
1
2
3
4
5
6
7
8
9
// Main.cpp
class CMain {
 
  public:
 
     void display ();
};
void CMain::display ()
   { std::cout << "Hello" << std::endl; }
Добавлено через 1 минуту
учти это не реальный файл а иллюстрация как работает подключение, там еще куча нюансов
dimkaok
1 / 1 / 0
Регистрация: 06.03.2013
Сообщений: 128
17.04.2013, 12:53  [ТС]     Библиотеки подключать в *.h или в *.cpp файлах? #6
Ага, понял, спасибо
Yandex
Объявления
17.04.2013, 12:53     Библиотеки подключать в *.h или в *.cpp файлах?
Ответ Создать тему
Опции темы

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