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

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

Войти
Регистрация
Восстановить пароль
 
gromo
371 / 270 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
#1

Почему работает puts() из <cstdio> ? - C++

04.09.2013, 19:20. Просмотров 517. Ответов 3
Метки нет (Все метки)

Всем привет!
Вы можете сказать, что мне нечего делать, но я спрошу
Элементарный ХеллоуВорлд
C++
1
2
3
4
5
6
#include <cstdio>
int main()
{
    puts( "Hello, World" );
        return 0;
}
Я же не делал здесь using namespace std; !

В <cstdio> файл <stdio.h> включается безо всяких директив условной компиляци... Зачем тогда, спрашивается делать файл <cstdio> ?? Ведь он, получается, не инкапсулирует объявления puts(), gets() ...

И еще к чему тогда эти директивы в <cstdio>
Кликните здесь для просмотра всего текста
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
{
// File /usr/include/c++/4.8.1/cstdio
namespace std {
  using ::FILE;
  using ::fpos_t;
 
  using ::clearerr;
  using ::fclose;
  using ::feof;
  using ::ferror;
  using ::fflush;
  using ::fgetc;
  using ::fgetpos;
  using ::fgets;
  using ::fopen;
  using ::fprintf;
  using ::fputc;
  using ::fputs;
  using ::fread;
  using ::freopen;
  using ::fscanf;
  using ::fseek;
  using ::fsetpos;
  using ::ftell;
  using ::fwrite;
  using ::getc;
  using ::getchar;
  using ::gets;
  using ::perror;
  using ::printf;
  using ::putc;
  using ::putchar;
  using ::puts;
  using ::remove;
  using ::rename;
  using ::rewind;
  using ::scanf;
  using ::setbuf;
  using ::setvbuf;
  using ::sprintf;
  using ::sscanf;
  using ::tmpfile;
  using ::tmpnam;
  using ::ungetc;
  using ::vfprintf;
  using ::vprintf;
  using ::vsprintf;
} // namespace


Bash
1
2
3
z@x:~$ g++ -v
gcc version 4.8.1 20130725 (prerelease) (GCC) 
z@x:~$
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2013, 19:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему работает puts() из <cstdio> ? (C++):

Из fstream в cstdio - C++
Всем привет. Стоит задача: Написать программу, которая считывает текст из файла и записывает в другой файл только те предложения, которые...

из cstdio в fstream - C++
вод программа, написанная через функцию cstdio #include &quot;stdafx.h&quot; #include &lt;cstdio&gt; #include &lt;iostream&gt; #pragma warning(disable:...

cstdio vs fstream - C++
Есть программа, виводящяя 16-ричный дамп бинарного файла (вместо каждого байта входного файла виводится значение в 16-ричной системе) Для...

<cstdio> выдает 299 ошибок - C++
По совету с форума начал изучать C++ по книге &quot;Герберт Шилдт - Самоучитель C++&quot;. При выполнении одного из уроков visual studio выдает...

Что за ошибка с использованием cstdio? - C++
Вот код: #include &lt;cstdio&gt; #include &lt;clocale&gt; using namespace std; int main() { setlocale(LC_ALL,&quot;Russian&quot;); double...

Работа с файлом без использования библиотеки cstdio - C++
Добрый день! Было дано задание: создать файл и работать с ним без использования библиотеки cstdio. Если есть какие-то идеи, прошу...

3
HighPredator
5541 / 1854 / 346
Регистрация: 10.12.2010
Сообщений: 5,472
Записей в блоге: 2
04.09.2013, 21:22 #2
Вы наблюдаете это потому, что "скопирование" в глобальное и std пространства имен является implementation-dependent.

Добавлено через 36 секунд
Для данной категории заголовочных файлов разумеется.
0
gromo
371 / 270 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
04.09.2013, 22:30  [ТС] #3
HighPredator, простите, не совсем вас понял. получается при включении <cstdio> все эти функции сразу видны в глобальном пространстве, а эти все директивы (в спойлере) добавлены для совместимости с с++? Что Вы подразумеваете под словом "скопирование" ?
0
HighPredator
5541 / 1854 / 346
Регистрация: 10.12.2010
Сообщений: 5,472
Записей в блоге: 2
05.09.2013, 00:01 #4
Цитата Сообщение от gromo Посмотреть сообщение
получается при включении <cstdio> все эти функции сразу видны в глобальном пространстве
Да. Подключение cstdio, равно как и любого из этой группы, гарантирует размещение имен в пространстве std, но они же могут находиться в глобальной области видимости. Вот это "могут" в разделе совместимости стандарта языка описано как implementation-dependent. То есть в отдельно взятом компиляторе может быть, а может и не быть. Под скопированием (от scope) я подразумеваю размещение в рамках области видимости.
1
05.09.2013, 00:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2013, 00:01
Привет! Вот еще темы с ответами:

Почему выводится в виде таблицы и почему не работает сортировка - C++
почему выводится в виде таблицы? почему не работает сортировка? и как туда можно вставить классы комнат? hotel.h #include...

Переделать cout<< на puts - C++
Помогите мне переделать это выражение cout &lt;&lt; &quot; &quot; &lt;&lt; MenuItems; В выражение через &quot;puts&quot;

Собственная функция gets и puts - C++
Как описать свою функцию gets, не могу понять, чтобы работала в моей библиотеке. Аналогично puts. У кого-нибудь есть мысли на этот счет?

printf(), puts(), cout<< Что лучше? - C++
Помогите разобраться какой способ вывода лучше и в какой ситуации. Чем они вообще отличаются друг от друга?


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

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

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