Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2013, 20:43   #1
Andrey_Ov
Пользователь
 
Регистрация: 20.11.2013
Сообщений: 28
По умолчанию Цель использования #ifndef

Изучаю книги по C++ читаю об использовании #ifndef, но хоть убей не могу понять какие последствия для программы если не использовать эту директиву. Что ждет программу если заголовочный файл будет в результате подключен несколько раз?
Andrey_Ov вне форума Ответить с цитированием
Старый 20.11.2013, 20:56   #2
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

redeclaration, например.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 20.11.2013, 21:03   #3
Andrey_Ov
Пользователь
 
Регистрация: 20.11.2013
Сообщений: 28
По умолчанию

#ifndef TIME_H
#define TIME_H
....
#endif

большая просьба: давая ответ помните что я первоклассник в с++ и такие слова, как redeclaration, мне ни о чем не говорят. Заранее спасибо за понимание и благодарю за ответы.

Последний раз редактировалось Andrey_Ov; 20.11.2013 в 21:10.
Andrey_Ov вне форума Ответить с цитированием
Старый 20.11.2013, 21:36   #4
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Когда код разрастается в несколько сот, пусть, десятков файлов, возникает вероятность того, что один их этих файлов(например хедер) будет "заинклюдин" больше одного раза. Если в этом файле присутствует объявление класса, структуры, переменной, функции, а оно присутствует, то возникнет ошибка переобъявления(redeclaration).
P.S. это пример.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог

Последний раз редактировалось _PROGRAMM_; 20.11.2013 в 21:40.
_PROGRAMM_ вне форума Ответить с цитированием
Старый 20.11.2013, 21:44   #5
Andrey_Ov
Пользователь
 
Регистрация: 20.11.2013
Сообщений: 28
По умолчанию

Огромнейшее спасибо. Как я понял компилятору это не понравится)
Andrey_Ov вне форума Ответить с цитированием
Старый 20.11.2013, 21:53   #6
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Цитата:
Огромнейшее спасибо. Как я понял компилятору это не понравится)
Да пожалуйста. Он выбъет ошибку redeclaration(в лучшем случае)

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 20.11.2013, 21:53   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Если в этом файле присутствует объявление класса, структуры, переменной, функции, а оно присутствует, то возникнет ошибка переобъявления(redeclaration).
А почему в Си не придумали от этого защиту? Это риторический вопрос, но все же.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.11.2013, 22:01   #8
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Думаю из-за строгости языка. Он должен внушать страх перед своими пользователями.

Теоретически прикинув, я предполагаю, что связанно все это или с формированием объектных файлов, или со стремлением к удобочитаемому коду.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 20.11.2013, 22:47   #9
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А почему в Си не придумали от этого защиту?
Некоторые компиляторы поддерживают директиву #pragma once, при наличие который файл будет заинклюден только один раз.
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработать алгоритм наведения ракеты на цель. KennyMc Помощь студентам 8 19.07.2011 20:36
Цель : Получить сведения о системе MeTeOpA Visual C++ 4 31.01.2011 01:39
#ifndef #endif #extern Golovastik Общие вопросы C/C++ 5 03.03.2010 22:53
Bryce. Основная её цель - создание ландшафтов NSV Мультимедиа в Delphi 10 08.07.2009 22:24
ЕСТЬ ЦЕЛЬ ПОМОГИТЕ ДОСТИЧ ЕЁ тёмный Фриланс 2 03.05.2009 01:28