8 / 8 / 4
Регистрация: 23.04.2014
Сообщений: 59
1

#ifndef и #include

01.06.2014, 18:52. Показов 1438. Ответов 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 раз и на всю программу?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.06.2014, 18:52
Ответы с готовыми решениями:

Работа с файлами в C# с исп. библиотек #include <stdio.h> #include <stdlib.h> #include <math.h> #include <io.h>
В типизированном файле записаны названия городов и их численность. Увеличить численность каждого...

#include<iostream>// подключение библиотек #include <conio.h> #include <climits>
помогите для этой программы сделать блок-схему. Пожалуйста #include&lt;iostream&gt;// подключение...

Чем отличается #include <cstring>, #include <string> и #include <string.h>?
Доброго времени суток :) Пишу свой класс и мне для нужны функции для работы со строками. Когда...

Директива #ifndef
Здравствуйте! Есть такой код: #define lastVersion #ifndef lastVersion #include &lt;version1.h&gt; ...

1
Модератор
Эксперт по электронике
8698 / 6496 / 879
Регистрация: 14.02.2011
Сообщений: 22,719
01.06.2014, 19:02 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
т.е если несколько включишь свой файл то включится он один раз пока не определен макрос

потом макрос определится и весь текст из файла не будет компилироваться
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.06.2014, 19:02
Помогаю со студенческими работами здесь

Warning: include(1) [function.include]: failed to open stream: No such file or directory in
Выдает вот такую ошибку Warning: include(1) : failed to open stream: No such file or directory...

Warning: include(templates.php) [function.include]: failed to open stream: No such file or directory
Как исправить ошибку, этот текст выдает на главной странице

В чем суть директив #include <Windows.h> #include <stdlib.h>
/*хочу сделать простую графическую программу ранее работал с turbo 3.0 я так понимаю &lt;graphics.h&gt;...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru