0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 9
1

C++ и директивы include c пространством имён

28.06.2012, 13:55. Показов 2759. Ответов 12
Метки нет (Все метки)

Всем привет!
Я только начал изучать C++, в связи с этим появились вопросы:
1. В одной книге я встретил выражение, и оно меня несколько запутало — В пространство имён добавляются переменные объявленные программистом(их идентификаторы и значения)? Или же там находятся обозначения только операторов(cout,cin и т.п.)?
2.Зачем нужны директивы include если операторы уже объявлены в пространстве имён?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.06.2012, 13:55
Ответы с готовыми решениями:

Не является пространством имён
Такой код не работает, как быть? P.S. пишу в Visual Studio 2017 Community namespace a {...

Несколько модулей с одним пространством имен
Хочу сделать несколько модулей ,с разными пространствами имен .Но ,чтобы при этом они бы ли в одном...

Настройка директивы include
Доброго! Приучаю себя делать структуру файлов в папках. Когда все файлы были в куче, то...

Подключение с помощью директивы #include нескольких функций, находящихся в разных файлах.
Здравствуйте, уважаемые программисты. Помогите, пожалуйста, разобраться в такой ситуации: есть...

12
86 / 81 / 28
Регистрация: 02.08.2011
Сообщений: 335
28.06.2012, 14:08 2
У тебя каша в голове. Расслабься и заново прочитай книжку.
1
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 9
28.06.2012, 14:18  [ТС] 3
Эххх....пожалуй, так и сделаю.
0
387 / 214 / 102
Регистрация: 09.04.2012
Сообщений: 635
28.06.2012, 14:35 4
Пространство имен задает область видимости имен. "В пространство имён добавляются переменные объявленные программистом(их идентификаторы и значения)?" - это верно. Например:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
 
using namespace std;
 
namespace RSDN
{
int g_j=6;
void f()
{
std::cout << "namespace RSDN\n";
}
 
}
 
using namespace RSDN;
 
int main()
{
 
std::cout << "w\n";
RSDN::f();
std::cout << g_j << "\n";
 
return 0;
}
>>2.Зачем нужны директивы include если операторы уже объявлены в пространстве имён?

Не уверен, но возможно namespace объявлено в инклудах и без них самим пространством нельзя пользоваться, так же как и функциями, переменными и классами объявленными в инклудах.
1
88 / 67 / 37
Регистрация: 28.06.2012
Сообщений: 161
28.06.2012, 14:39 5
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
//... 
using namespace RSDN;
 
int main()
{
std::cout << "w\n";
RSDN::f();
std::cout << g_j << "\n";
}
Прошу прощения, но зачем в main'е указывать используемые пространства, если мы их уже используем?
1
86 / 81 / 28
Регистрация: 02.08.2011
Сообщений: 335
28.06.2012, 14:41 6
asidorchenko,
Второй вопрос внимательно прочитай, а то он еще больше запутается.

art3m98run,
Посмотри примеры про пространство имен, а то чет ты как то это не правильно понял.
1
387 / 214 / 102
Регистрация: 09.04.2012
Сообщений: 635
28.06.2012, 14:58 7
Прошу прощения, но зачем в main'е указывать используемые пространства, если мы их уже используем?
Если в пространствах функции или переменные с одинаковыми именами то указывать пространство будет необходимо. В маленьких проектах и студенческих обычно незаметны проблемы реальных крупных проектов.

В iostream написано _STD_BEGIN то есть содержимое заголовочных файлов обернуто в
C++
1
2
3
namespace std
{
}
так как в yvals.h
C++
1
2
#define _STD_BEGIN  namespace std {
  #define _STD_END      }
0
88 / 67 / 37
Регистрация: 28.06.2012
Сообщений: 161
28.06.2012, 15:05 8
Цитата Сообщение от asidorchenko Посмотреть сообщение
Если в пространствах функции или переменные с одинаковыми именами то указывать пространство будет необходимо.
Я знаю это. Но в данном случае идентификаторы в пространствах не пересекаются.
Лишний код, или я заблуждаюсь?
0
В астрале
Эксперт С++
8045 / 4802 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
28.06.2012, 15:10 9
ЛетающийЕнот, Лишний код в том случае using namespace ... ну как по мне.
0
88 / 67 / 37
Регистрация: 28.06.2012
Сообщений: 161
28.06.2012, 15:13 10
ForEveR, я как раз о том же
0
Форумчанин
Эксперт CЭксперт С++
8191 / 5041 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
28.06.2012, 15:18 11
ЛетающийЕнот, https://www.cyberforum.ru/blogs/34326/blog275.html
посмотри и реши, что лишнее. Как уже заметили выше, в серьезных проектах может происходить конфликт имен.
0
88 / 67 / 37
Регистрация: 28.06.2012
Сообщений: 161
28.06.2012, 15:29 12
MrGluck,

Не по теме:

каждый выбирает то, что удобнее/безопаснее/правильнее/...


И что целесообразнее, о чём и речь идёт.
0
Форумчанин
Эксперт CЭксперт С++
8191 / 5041 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
28.06.2012, 15:35 13
Цитата Сообщение от ЛетающийЕнот Посмотреть сообщение
MrGluck,

Не по теме:

каждый выбирает то, что удобнее/безопаснее/правильнее/...


И что целесообразнее, о чём и речь идёт.
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.06.2012, 15:35
Помогаю со студенческими работами здесь

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

Директива using namespace может применяться только к пространствам имен; "System.Object" является типом, а не пространством имен
Что с этим делать?

Непонятки с пространством имен
Есть основной файл проекта - start.cpp , файл описания формы Form1.h , и файл с обработчиками формы...

Гемор с пространством имен.
Всем доброго времени суток! есть три файла: main.cpp - основной код #include &lt;iostream&gt;...


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

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

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