Отправляет email-рассылки с помощью сервиса Sendsay

[prg] почему компилируется один вариант программы и не компилируется другой?

здравствуйте.
извините за возможно глупый вопрос, но все же...
есть два варианта программы "hello< world":
вариант 1:

#include <iostream>
int main()
{
std::cout<<"Hello, world!\n";
}

он компилируется нормально.
вариант 2:

#include <iostream.h>

int main ()
{
cout << "Hello, World!\n";
}
на второй вариант mingw ругается так:
main.cpp:1:22: фатальная ошибка: iostream.h: No such file or directory
компиляция прервана.
вопрос: в чем разница между вариантами, почему не скомпилировался второй
вариант?

Ответить   Sat, 17 Aug 2013 00:30:41 +0700 (#2805624)

 

Ответы:

Приветствую всех.

Но ведь причина указана в сообщении компилятора: файл iostream.h не существует
или не найден!
Вы пытаетесь подключить несуществующий файл, именно по этой причине второй вариант
не компилируется.
В современной версии C++ обработка директивы #include отличается от того, что
было в языке C.
Директива #include в C++ может содержать как имя файла, так и некий абстрактный
идентификатор, не являющийся именем реального файла.
Запись вида:
#include <iostream>
как раз и содержит такой идентификатор 'iostream'. Какой реальный файл соответствует
этому идентификатору, решает компилятор.
Если в директиве #include будет указано имя файла с расширением, то компилятор
попытается найти и подключить указанный файл.
Кроме того, это не единственная ошибка во втором варианте: cout существует только
в пространстве имен std, поэтому либо надо использовать директиву using, либо
полное имя std::cout.

Успехов. Анатолий.

Ответить   "i_chay" Fri, 16 Aug 2013 23:15:12 +0300 (#2805664)