Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

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

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

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

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

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

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

Возникает конфликт. Как сделать так, чтобы такого конфликта не было, НЕ меняя содержимого файлов библиотек?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2010, 11:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как подключить .h файл дважды? (C++):

Как в проект подключить библиотеку? - C++
Есть компилятор GCC и графическая библиотека, как ее можно подключить? Компилю через консоль.

Как подключить компиляторы С и С++ к Netbeans в Windows?? - C++
Народ, памагите плиз, как подключить компиляторы С и С++ к Netbeans в виндовс?? Я попробовал скачать Cygwin и подключить компиляторы от...

как подключить файл *.HTML - C++ Builder
Бросил на новую форму компонент cppwebbrowser, но не знаю как подключить к нему файл справки находящийся в той же папке что и программа.

Как подключить внешний файл с функцуей - C++ Builder
Всем, привет! Вопрос 1 класса, но помогите разобраться пожалуйста. Я написал функцию вырезания символов с конца строки и хочу вынести ее...

Как подключить lib файл к проекту в C++ Builder - C++ Builder
Здрасвтвуйте, помогите плиз, нужно добавить lib файл к проекту в C++ Builder. Я скачал библиотеку lib сторонего разработчика и несколько...

подключить *.ехе файл - C++ Builder
как подключить *.ехе файл через баттон

8
CheshireCat
Эксперт С++
2895 / 1244 / 78
Регистрация: 27.05.2008
Сообщений: 3,397
31.01.2010, 13:16 #2
Решение простое - guard'ы. В файле lib.h должно быть что-то типа
C++
1
2
3
4
5
6
#ifndef __LIB_H__
#define __LIB_H__
 
// тут смысловое содержание заголовка....
 
#endif  // __LIB_H__
1
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
31.01.2010, 19:12 #3
В файле lib.h должно быть что-то типа
Во всех файлах *.h должно быть что-то такое.
1
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
09.02.2010, 09:43 #4
Можно попробовать:
C++
1
#pragma once
0
insideone
Модератор
Автор FAQ
3643 / 922 / 51
Регистрация: 10.01.2010
Сообщений: 2,479
09.02.2010, 16:38 #5
кстати интересно вообще почему такое поведение не рассматривается как поведение по умолчанию, неужели можно включить файл дважды для какой то пользы?
0
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
09.02.2010, 16:46 #6
Это все делается для развития наших способностей)))
0
Airhand
502 / 458 / 3
Регистрация: 08.07.2009
Сообщений: 2,625
09.02.2010, 19:19 #7
Цитата Сообщение от insideone Посмотреть сообщение
кстати интересно вообще почему такое поведение не рассматривается как поведение по умолчанию, неужели можно включить файл дважды для какой то пользы?
Препроцессор не обязан знать, что может прогеру взбрести в голову. Чем проще код - тем меньше ошибок. Для реализации этого, требуется код.#pragma once - не везде работает. Поэтому её лучше не использовать.
1
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
10.02.2010, 07:58 #8
кстати интересно вообще почему такое поведение не рассматривается как поведение по умолчанию, неужели можно включить файл дважды для какой то пользы?
Разумеется можно.
Например я писал модуль для быстрой сортировки простых типов.
В коде стоит #include одного и того же файла 16 раз
Правда там разные #define перед этим, что дает 16 разных вариантов сортировки - int, long, по возрастанию и по убыванию, ...
1
insideone
Модератор
Автор FAQ
3643 / 922 / 51
Регистрация: 10.01.2010
Сообщений: 2,479
10.02.2010, 18:18 #9
2 odip Шаманство Спасибо за конкретизированный пример
0
10.02.2010, 18:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.02.2010, 18:18
Привет! Вот еще темы с ответами:

Подключить cpp файл - C++ Builder
Здраствуйте, возник вопрос - как подключить новый cpp файл в проекте билдера. Жму Add->other->Cpp file, появляется новый цпп файл в...

Ест 1 программа и как сделать так чтоби если оно уже открито запретит открить дважды ету программу? - C++ Builder
Доброго времени суток Как запретит программу включится если оно уже включено (вторую копию программы). Ест 1 программа и как...

Вызов кнопки дважды. - C++ Builder
Доброго времени суток всем!!! помогите разобраться новичку, как из события ButtonOnClick по нажатию на кнопку Button, вызвать повторное...

Как программно подключить Wi-FI? - C++ Builder
Добрый день! Как мне кнопкой на моей программе подключить Wi-Fi. И как программно ввести пароль?Буду рад за отзывы)))


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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