LINUX.ORG.RU

G++


0

0

Начал изучать с++, но при попытке собрать в g++ hello world, написанный на классическом страустроповском с++ :

g++ hworld.cc -o hworld

#file hworld.cc #include <iostream.h> int main() { cout<<"Hello world!"<<"\n"; return 0; }

получаю кучу мата о том, что потоков он таких не знает, операторы не задекларированны и тд

помогите разобраться с этим примером, наверное из-за какой-то незначительной ошибки пропадает весь процесс изучения языка

буду счастлив увидеть рабочий пример данной программы и правильную команду на ее компиляцию

заранее спасибо

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

И в чем же была ошибка. Она там была не одна :)

--- hworld.cc.orig      Thu Aug 10 14:47:39 2006
+++ hworld.cc   Thu Aug 10 14:34:59 2006        
@@ -1,7 +1,6 @@                                 
-#include <iostream.h>                          
-                                               
+#include <iostream>                            
 int main() {                                   
-  cout<<"Hello world!"<<"\n";                  
+  using namespace std;                         
+  cout<<"Hello world!<<endl<<flush;            
   return 0;                                    
 }                                              

mutronix ★★★★
()
Ответ на: комментарий от e

> И после этого по соседству мы слышим речи о том, что с++ уже кучу времени не менялся ;)

Возможно мне изменяет память, но в страуструпе, кажется, написано, что-то в смысле "поскольку мы везде используем только стандартную библиотеку, то для краткости 'using namespace std;' в примерах опускается".

А все остальнок ("\n" vs std::endl и т.п.) - это не ошибки, это, максимум, помарки. Может, ему нужен строго униксовый "\n", а не системно-зависимый endl?

anonymous
()
Ответ на: комментарий от anonymous

Какой еще "системно зависимый" \n, ежели все примеры в Страуструпе даны для юниксового окружения. То не системная зависимость, то кривые руки писателей венды и макоси.

На самом деле все зависит от версии GCC, чем больше номер, тем с меньшей вероятностью прокатят вышеприведенные примеры, в 3.3 будет ругань на устаревшие хидеры, в 3.4 вроде бы тоже, но начиная с 4.0 - будет так как в начальном посте. Т.е. чем ближе к современному стандарту - тем менее простительны ошибки.

e
()
Ответ на: комментарий от e

IMHO, это архиправильный подход к реализации языка и консистентности его базовых компонент.

mutronix ★★★★
()
Ответ на: комментарий от mutronix

Автор темы:

на самом деле ошибка была в том что при компиляции я использовал директиву не #include <iostream.h>, а #include <iostream>, как мне советовал мой g++ 3.3.5, но в этом случае пример и не работал.

Спаибо всем отклинувшимся.

anonymous
()
Ответ на: комментарий от anonymous

но приведенный mutronix пример, тоже отлично зараблал и без мата от компилятора, в отличаи от случая с моим примером

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