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

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

Восстановить пароль Регистрация
 
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
04.09.2013, 19:20     Почему работает puts() из <cstdio> ? #1
Всем привет!
Вы можете сказать, что мне нечего делать, но я спрошу
Элементарный ХеллоуВорлд
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:~$
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HighPredator
 Аватар для HighPredator
5349 / 1732 / 320
Регистрация: 10.12.2010
Сообщений: 5,119
Записей в блоге: 3
04.09.2013, 21:22     Почему работает puts() из <cstdio> ? #2
Вы наблюдаете это потому, что "скопирование" в глобальное и std пространства имен является implementation-dependent.

Добавлено через 36 секунд
Для данной категории заголовочных файлов разумеется.
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
04.09.2013, 22:30  [ТС]     Почему работает puts() из <cstdio> ? #3
HighPredator, простите, не совсем вас понял. получается при включении <cstdio> все эти функции сразу видны в глобальном пространстве, а эти все директивы (в спойлере) добавлены для совместимости с с++? Что Вы подразумеваете под словом "скопирование" ?
HighPredator
 Аватар для HighPredator
5349 / 1732 / 320
Регистрация: 10.12.2010
Сообщений: 5,119
Записей в блоге: 3
05.09.2013, 00:01     Почему работает puts() из <cstdio> ? #4
Цитата Сообщение от gromo Посмотреть сообщение
получается при включении <cstdio> все эти функции сразу видны в глобальном пространстве
Да. Подключение cstdio, равно как и любого из этой группы, гарантирует размещение имен в пространстве std, но они же могут находиться в глобальной области видимости. Вот это "могут" в разделе совместимости стандарта языка описано как implementation-dependent. То есть в отдельно взятом компиляторе может быть, а может и не быть. Под скопированием (от scope) я подразумеваю размещение в рамках области видимости.
Yandex
Объявления
05.09.2013, 00:01     Почему работает puts() из <cstdio> ?
Ответ Создать тему
Опции темы

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