LINUX.ORG.RU

Почему <iostream.h> работает, а <iostream> нет


0

0

Вот поискал здесь на форуме и сразу решил несколько своих вопрсов. Но возник другой: все пишут, что надо писать просто ioatream, т.е. без .h, но когда я пишу обычную прогу типа "Hello World!" и испольую #include <iostream>, то мне выдаётся ошибка, что cout не определена, а если я пишу #include <iostream.h>, то всё работает, но компилдятор ругается, что я использую .h, так как же быть? Помогите чайнику.

anonymous

Ответ на: комментарий от Murr

Да, именно этот вопрос я и решил в процессе поиска. :) Использую g++

anonymous
()

#include <iostream>
using namespace std;
int main()
{
cout<<"Hello world"<<endl;
return 0;
}

или

#include <iostream>
int main()
{
std::cout<<"Hello world"<<endl;
return 0;
}

Delay ★★
()

Вопрос: а почему нерекомендуется использовать приставку .h ?

anonymous
()

Спасибо, всё действительно заработало, но теперь возник другой вопрос: мне для учёбы часто приходится пользоваться math.h, так вот, если я пишу #include <math>, то компилятор ругается, что такого файла нет, а если math.h, то всё нормально и даже ни про какие ".h" не вспоминает (не ругается). Так в каких же случаях писать .h, а в каких нет?

anonymous
()

Jest takoje pon'atije, ka "prostranstvo im'on" (name-spaces). Pochitai na etu temu, i vs'o stanet jasno. Vkratce: ty objavl'ajesh peremennuju, funkciju, class i t.d., i ukazyvajesh, v kakom prostranstve im'on jejo mozhno ispolzovat. Jesli ty ne ukazal, chto hochesh vospolzovatsa etim prostranstvom - ne smozhesh vospolzovatsa svoei peremennoi (functiei, classom i t.d.). Svoeobraznyj metod "zaschity dannyh", kak protected-members v classah.

Udachi!

anonymous
()

Ага, понятно, посоветуйте тогда чё-нить толковое, подробное (не для идиотов, но всё-таки для начинающих, желающих стать "продвинутыми" :)) для написания программ именно под Linux. А то, например, частенько в книжках я вижу conio.h и там функцию getch(), а вот у себя в пингвине не нашёл ничего подобного. Вот поэтому хочется, чтобы подобные вопросы освещались. Заранее спасибо.

anonymous
()

> Так в каких же случаях писать .h, а в каких нет?

так уж решили создатели с++ -- дабы не создавать путаницу с C'шными заголовочными файлами, именовать С++'ные заголовочные файлы без '.h' . поэтому, все стнадарные с++ инклуды имеют такой вот странный вид. при этом использовать С'шные инклуды ни кто не запрещает. однако, для заголовочных файлов стандартной библиотеки С (и только для нее), стандартом С++ устанавлен соответствующий набор С++ инклудов, которые именуются следующим образом: к имени С'шного инклуда слева приписывается буква 'c' и удаляется '.h'. их вот и рекомендуют использовать. таким образом вместо

#include <math.h>

в С++ будет предпочтительнее использовать

#include <cmath>

а вообще -- ls /usr/includes/c++/

anonymous
()

Большое спасибо!

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.