<iostream> и <iostream.h> - какая разница ?
От: promko Украина  
Дата: 31.10.02 20:34
Оценка:
или например какая разница между <ios> и <ios.h> ?
Re: <iostream> и <iostream.h> - какая разница ?
От: Анатолий Широков СССР  
Дата: 31.10.02 20:59
Оценка: 6 (2)
Здравствуйте promko, Вы писали:

P>или например какая разница между <ios> и <ios.h> ?

При использовании заголовочных файлов стандартной библиотеки STL c расширением h гарантирует размещение имен в глобальном пространстве имен, а без расширения — в простанстве std.

// std namespace
#include <iostream>
...
std::cout << "test\n";

// global namespace
#include <iostream.h>
...
cout << "test\n";


Помимо этого, для размещения имен из стандартной библиотеки С в простанстве std, к заголовоку добавляют 'c' и отбрасывают расширение '.h':

// std namespace
#include <iostream>
#include <cmath>
...
std::cout << std::cos(0);

// global namespace
#include <iostream.h>
#include <math.h>
...
cout << cos(0);
Re: <iostream> и <iostream.h> - какая разница ?
От: uuid N/A
Дата: 31.10.02 21:19
Оценка:
Здравствуйте promko, Вы писали:

P>или например какая разница между <ios> и <ios.h> ?


<ios.h> обозначена в VC7 как "старая" библиотека и везде рекомепдовано использовать новую.
Математик должен быть ленивым. (c) мой бывший преподаватеть математики.
Re: <iostream> и <iostream.h> - какая разница ?
От: Andrews Vl. Magazinoff Россия  
Дата: 31.10.02 23:35
Оценка:
Здравствуйте promko, Вы писали:

P>или например какая разница между <ios> и <ios.h> ?


никакой
это все достаточно новые компиляторы поддерживают без h
Re: <iostream> и <iostream.h> - какая разница ?
От: jazzer Россия Skype: enerjazzer
Дата: 01.11.02 11:23
Оценка: 4 (1)
Здравствуйте promko, Вы писали:

P>или например какая разница между <ios> и <ios.h> ?


<iostream.h> — это один из заголовочных файлов так называемой "старой потоковой библиотеки", которой уже тыщу лет, она не парамеризована и еще много чего.

<iostream> — это один из заголовочных файлов стандартной (в смысле, которая описана в Стандарте) потоковой библиотеки, которая параметризована (в том смысле, что там не просто классы потоков (работающие только с char), как в старой, а шаблоны, которые могут быть заточены под любой символьный тип, а не только под char — например, еще и под wchar_t).

Так что нужно смотреть очень внимательно, где что включается, и не смешивать использование этих библиотек, потому что до сих пор они часто поставляются вместе — и новая, и старая.

Кстати, хороший способ обезопасить себя от старой библиотеки — не использовать директив типа using namespace std; и подобных, позволяющих обращаться в новым классам без указания пространства имен, а самому в программе обращаться к ним исключительно так: std::cout, std::endl и т.д, т.е. с явной квалификацией (кстати, это — лишняя иллюстрация полезности введения пространств имен в С++ — возможность одновременно использовать 2 библиотеки, определяющие одинаковые имена).
jazzer (Skype: enerjazzer) Ночная тема для RSDN
You will always get what you always got
  If you always do  what you always did