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

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

Войти
Регистрация
Восстановить пароль
 
Borkot
4 / 4 / 0
Регистрация: 05.05.2012
Сообщений: 186
Записей в блоге: 1
#1

Объяаление #ifndef STRING_H_ - C++

15.06.2013, 12:53. Просмотров 346. Ответов 9
Метки нет (Все метки)

Вот мы объявляем
C++
1
2
3
#include <iostream>
#ifndef STRING_H_
#define STRING_H_
Уже не редко встречаю такое включение string.h Просто хотел бы уточнить.Я так понимаю с++ компилятор сам преобразует
string.h в define STRING_H_
Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2013, 12:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Объяаление #ifndef STRING_H_ (C++):

#ifndef и #include - C++
Допустим, я создал класс #ifndef SOMECLASS_H #define SOMECLASS_H class SomeClass{}; #endif Есть несколько вопросов.

Директива #ifndef - C++
Здравствуйте! Есть такой код: #define lastVersion #ifndef lastVersion #include &lt;version1.h&gt; int main() { ClassA A; ...

Почему отказались от #ifndef? - C++
Всем привет, Лафоре пишет, что от использовании директивы #ifndef стали отказываться в пользу #if !defined(). Может кто-нибудь объяснить...

Команды #ifndef #ifdef и #endif - C++
Помогите разобраться с командами #ifndef #endif и #ifndef в книге все как то не понятно объяснено или же лучше если у кого то есть видео на...

Назначение директив препроцессора: #ifndef, #define, #endif - C++
Объясните, что обозначают эти директивы? Заем это использовать в классах? #ifndef myclass #define myclass class someclass { ...

Объясните, в чем суть директив #ifndef/#define/#endif - C++
Не понял в чем суть директив: #ifndef .. #define.. #endifОбъясните пожалуйста..это как - то связано с хедерами, но вот как ??

9
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
15.06.2013, 13:44 #2
это устаревшая форма защиты от повторного включения файла,
C++
1
2
#ifndef STRING_H_ //если не определен string.h
#define STRING_H_ //определить string.h
+ должен быть
C++
1
#endif
1
Croessmah
Ушел
Эксперт CЭксперт С++
13565 / 7716 / 873
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
15.06.2013, 13:49 #3
Цитата Сообщение от Кудаив Посмотреть сообщение
это устаревшая форма защиты от повторного включения файла,
кто сказал?
1
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
15.06.2013, 13:52 #4
Croessmah, а разве нет?
C++
1
#pragma once
по-новее и по-удобнее
0
Croessmah
Ушел
Эксперт CЭксперт С++
13565 / 7716 / 873
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
15.06.2013, 14:03 #5
Цитата Сообщение от Кудаив Посмотреть сообщение
по-новее и по-удобнее
может обрабатываться по разному в разных компиляторах или вообще отсутствовать
1
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
15.06.2013, 14:20 #6
ну вообще отсутствовать - не слышал
1
Borkot
4 / 4 / 0
Регистрация: 05.05.2012
Сообщений: 186
Записей в блоге: 1
15.06.2013, 14:44  [ТС] #7
Спасибо
0
castaway
Эксперт С++
4919 / 3027 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
15.06.2013, 15:19 #8
#pragma once — нестандартная, но широко распространенная препроцессорная директива
Кстати тут: http://ru.wikipedia.org/wiki/Pragma_once , сказано что именно #pragma once считается устаревшей!


"This is called `#pragma once', and was used in addition to the `#ifndef' conditional around the contents of the header file. `#pragma once' is now obsolete and should not be used at all."
http://gcc.gnu.org/onlinedocs/gcc-2.95.3/cpp_1.html#SEC8
0
0x10
2509 / 1687 / 253
Регистрация: 24.11.2012
Сообщений: 4,232
15.06.2013, 15:28 #9
Цитата Сообщение от lazybiz Посмотреть сообщение
"This is called `#pragma once', and was used in addition to the `#ifndef' conditional around the contents of the header file. `#pragma once' is now obsolete and should not be used at all."
http://gcc.gnu.org/onlinedocs/gcc-2....pp_1.html#SEC8
А еще древнее доки нельзя было найти?) Эти на gcc версии 2.95, сейчас последняя 4.8.1, при этом уже с версии 3.4.
File handling in the preprocessor has been rewritten. GCC no longer gets confused by symlinks and hardlinks, and now has a correct implementation of #import and #pragma once. These two directives have therefore been un-deprecated.
http://gcc.gnu.org/gcc-3.4/changes.html
0
castaway
Эксперт С++
4919 / 3027 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
15.06.2013, 15:33 #10
То что директива не стандартна остается фактом.
0
15.06.2013, 15:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2013, 15:33
Привет! Вот еще темы с ответами:

Как влияет inline и обертка(#ifndef #define #endif) .h файла на компоновщик. - C++
Есть файл Point.h: #ifndef POINT_GUARD #define POINT_GUARD ...

Нюансы синтаксиса: #pragma once и ifndef define endif это одно и тоже? - C++
Я недопонял #pragma once и ifndef define endif это одной и тоже?

Ifndef-define-endif - C++ Qt
Qt Creator по умолчанию создаёт хэдер любого класса с подобной шапкой: #ifndef MYCLASS_H // ЭТО #define MYCLASS_H // И ЭТО ...

#ifndef #endif и extern - Visual C++
#ifndef #endif и extern Как применять эти директивы и зачем они? без них обходился и раньше, но в чужом коде их увидел. ...


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

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

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