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

#ifndef и #include - C++

Восстановить пароль Регистрация
 
randy92
7 / 7 / 2
Регистрация: 23.04.2014
Сообщений: 59
01.06.2014, 18:52     #ifndef и #include #1
Допустим, я создал класс

C++
1
2
3
4
5
6
#ifndef SOMECLASS_H
#define SOMECLASS_H
 
class SomeClass{};
 
#endif
Есть несколько вопросов.
1. Директива #ifndef не воспринимает строку SOMECLASS_H, то есть я могу тут написать someCLASS_H, sameclass_H или вообще ничего не писать? Это нужно лишь для самого программиста?

2. Если я напишу так:
C++
1
2
3
4
5
6
7
#ifndef SOMECLASS_H
#define SOMECLASS_H
#include <iostream>
 
class SomeClass{};
 
#endif
, и включу iostream так же в main, то iostream будет в файле main 2 раза? Как этого избежать и подключать каждую библиотеку 1 раз и на всю программу?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2014, 18:52     #ifndef и #include
Посмотрите здесь:

Объясните, в чем суть директив #ifndef/#define/#endif C++
ошибка в лабе не находит #include<iomanip.h> #include<conio.h> C++
C++ #include в C++
C++ Как влияет inline и обертка(#ifndef #define #endif) .h файла на компоновщик.
C++ Какая разница между #include<> и #include""?
C++ Объяаление #ifndef STRING_H_
Почему отказались от #ifndef? C++
Чем отличается #include <cstring>, #include <string> и #include <string.h>? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,057
01.06.2014, 19:02     #ifndef и #include #2
Цитата Сообщение от randy92 Посмотреть сообщение
1. Директива #ifndef не воспринимает строку SOMECLASS_H, то есть я могу тут написать someCLASS_H, sameclass_H или вообще ничего не писать? Это нужно лишь для самого программиста?
ничего не понял
Цитата Сообщение от randy92 Посмотреть сообщение
и включу iostream так же в main, то iostream будет в файле main 2 раза?
не будет
внутри iostream тоже есть защита

смотрим как она действует
C++
1
2
3
4
5
6
7
8
9
10
#ifndef SOMECLASS_H
// если определен макрос  SOMECLASS_H выбрасываем весь текст до #endif
 
// иначе попадаем сюда
// определяем макрос SOMECLASS_H
#define SOMECLASS_H
//здесь что то 
class SomeClass{};
 
#endif
т.е если несколько включишь свой файл то включится он один раз пока не определен макрос

потом макрос определится и весь текст из файла не будет компилироваться
Yandex
Объявления
01.06.2014, 19:02     #ifndef и #include
Ответ Создать тему
Опции темы

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