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

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
#1

Как подключить .h файл дважды? - C++

31.01.2010, 11:50. Просмотров 1266. Ответов 8
Метки нет (Все метки)

Такая проблема:

имеется файл lib.h

и еще 2 файла: NewLib1.h и NewLib2.h, в каждый из которых включен предыдущий файл:
C++
1
#include "lib.h"
Проблема возникает, когда я компилирую файл program.cpp
#include "NewLib1.h"
#include "NewLib2.h"

Возникает конфликт. Как сделать так, чтобы такого конфликта не было, НЕ меняя содержимого файлов библиотек?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CheshireCat
Эксперт С++
2891 / 1240 / 78
Регистрация: 27.05.2008
Сообщений: 3,327
31.01.2010, 13:16     Как подключить .h файл дважды? #2
Решение простое - guard'ы. В файле lib.h должно быть что-то типа
C++
1
2
3
4
5
6
#ifndef __LIB_H__
#define __LIB_H__
 
// тут смысловое содержание заголовка....
 
#endif  // __LIB_H__
odip
Эксперт С++
7153 / 3293 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
31.01.2010, 19:12     Как подключить .h файл дважды? #3
В файле lib.h должно быть что-то типа
Во всех файлах *.h должно быть что-то такое.
Nameless One
Эксперт С++
5765 / 3414 / 255
Регистрация: 08.02.2010
Сообщений: 7,431
09.02.2010, 09:43     Как подключить .h файл дважды? #4
Можно попробовать:
C++
1
#pragma once
insideone
Модератор
Автор FAQ
3635 / 913 / 48
Регистрация: 10.01.2010
Сообщений: 2,460
09.02.2010, 16:38     Как подключить .h файл дважды? #5
кстати интересно вообще почему такое поведение не рассматривается как поведение по умолчанию, неужели можно включить файл дважды для какой то пользы?
Nameless One
Эксперт С++
5765 / 3414 / 255
Регистрация: 08.02.2010
Сообщений: 7,431
09.02.2010, 16:46     Как подключить .h файл дважды? #6
Это все делается для развития наших способностей)))
Airhand
502 / 458 / 3
Регистрация: 08.07.2009
Сообщений: 2,625
09.02.2010, 19:19     Как подключить .h файл дважды? #7
Цитата Сообщение от insideone Посмотреть сообщение
кстати интересно вообще почему такое поведение не рассматривается как поведение по умолчанию, неужели можно включить файл дважды для какой то пользы?
Препроцессор не обязан знать, что может прогеру взбрести в голову. Чем проще код - тем меньше ошибок. Для реализации этого, требуется код.#pragma once - не везде работает. Поэтому её лучше не использовать.
odip
Эксперт С++
7153 / 3293 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
10.02.2010, 07:58     Как подключить .h файл дважды? #8
кстати интересно вообще почему такое поведение не рассматривается как поведение по умолчанию, неужели можно включить файл дважды для какой то пользы?
Разумеется можно.
Например я писал модуль для быстрой сортировки простых типов.
В коде стоит #include одного и того же файла 16 раз
Правда там разные #define перед этим, что дает 16 разных вариантов сортировки - int, long, по возрастанию и по убыванию, ...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.02.2010, 18:18     Как подключить .h файл дважды?
Еще ссылки по теме:

C++ Как подключить obj-файл к проекту?
Как подключить внешний файл с функцуей C++ Builder
Как правильно подключить свой заголовочный файл? C++
Почему в файл значение дублируется (записывается дважды)? C++
C++ Как подключить obj файл к проекту?

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

Или воспользуйтесь поиском по форуму:
insideone
Модератор
Автор FAQ
3635 / 913 / 48
Регистрация: 10.01.2010
Сообщений: 2,460
10.02.2010, 18:18     Как подключить .h файл дважды? #9
2 odip Шаманство Спасибо за конкретизированный пример
Yandex
Объявления
10.02.2010, 18:18     Как подключить .h файл дважды?
Ответ Создать тему
Опции темы

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