Первая программа (Проблемы с компиляцией)

Модератор: Модераторы разделов

sdk
Бывший модератор
Сообщения: 210

Re: Первая программа

Сообщение sdk »

Едреныть, а у меня варнинг про deprecated выдает :). И версия gcc та же :).
Я и не говорил, что с iostream.h компилиться не будет. В предыдущем сообщении, я имел ввиду, что есть два варианта: или юзать iostream.h и -Wno-deprecated или iostream и соотв. три способа объявления cout.

Я думал, что вы про iostream (без .h) говорите, потому как ваш пост был прямо после того, как Mitya-ncc сказал:
Не, не надо. Но если iosteam используешь то надо указываеть пространство имён: допустим не cout, а std::cout и т.д.

Он же говорил про iostream без .h. А вы следом сказали, что необязательно :). Вот я и не понял.
Такая петрушка.
Серьезность - это способ сделать простые вещи сложными.
Если много знать - устанут глаза. Если много спать - то нет.
Нас никому не сбить с пути - нам пофигу куда идти.
:-)
Спасибо сказали:
Аватара пользователя
Mitya-ncc
Сообщения: 268
Статус: Живущий тут

Re: Первая программа

Сообщение Mitya-ncc »

:lol:
аж сами запутались
В одном мгновеньи – видеть вечность,
Огромный мир в горсти песка,
В одной песчинке – бесконечность,
И небо в чашечке цветка.
Спасибо сказали:
Аватара пользователя
GOster
Сообщения: 38

Re: Первая программа

Сообщение GOster »

Как ни странно, по этой теме в интернете ничего найти не удалось.
Поэтому пишу сюда.
Стоит Gentoo Linux
Итак проблема:
Есть, допустим, элементарная программа:

Код: Выделить всё

#include <iostream>

int main(){
     cout << "bla-bla-bla" << endl;
     return 0;
}


В папке /usr/include не было стандартных заголовков типа того же iostream.
Я нашел их в папке c gcc.
Перенес в /usr/include.
После этого при выполнении gcc bla.c выдается немеренное количество ошибок.
Половино этих ошибок говорят о том, что функции уже определены.
Подскажите, пожалуйста, что я делаю не так?
Как лучше начать писать программы под Linux?
Спасибо сказали:
Аватара пользователя
AndyX
Сообщения: 116

Re: Первая программа

Сообщение AndyX »

Эх, давно это было :)
Для начала, вместо

Код: Выделить всё

gcc bla.c

поробуй

Код: Выделить всё

g++ bla.c

А переносить заголовочные файлы может и не надо было...
I am in shape. Round is a shape.
Спасибо сказали:
Аватара пользователя
GOster
Сообщения: 38

Re: Первая программа

Сообщение GOster »

А в чем разница между gcc и g++?
Спасибо сказали:
Аватара пользователя
oav
Бывший модератор
Сообщения: 296

Re: Первая программа

Сообщение oav »

программа с ошибкой - используются объекты из namespace std но явно имя namespace не указывается. или поставь после #include using namespace std; или явно указывай его в коде: std::cout ...


g++ отличается от gcc тем, что выходной файл линкуется с библиотекой времени выполнения С++. (stdc++ вроде?)
Спасибо сказали:
Аватара пользователя
AndyX
Сообщения: 116

Re: Первая программа

Сообщение AndyX »

Код: Выделить всё

C++ source files conventionally use one of the suffixes .C, .cc, .cpp,
.c++, .cp, or .cxx; preprocessed C++ files use the suffix .ii.  GCC
recognizes files with these names and compiles them as C++ programs
even if you call the compiler the same way as for compiling C programs
(usually with the name gcc).

However, C++ programs often require class libraries as well as a com-
piler that understands the C++ language---and under some circumstances,
you might want to compile programs from standard input, or otherwise
without a suffix that flags them as C++ programs.  g++ is a program
that calls GCC with the default language set to C++, and automatically
specifies linking against the C++ library.  On many systems, g++ is
also installed with the name c++.

То есть нужно либо файл переименовать в bla.cpp, например, либо запускать g++


AndyX добавил в 16.03.2005 17:51

Хм... Переименование не помогло...
g++ рулит :)
I am in shape. Round is a shape.
Спасибо сказали:
agreed
Сообщения: 143
ОС: Fedora 10, Mac OS X 10.5

Re: Первая программа

Сообщение agreed »

Гм... Mandrake 10.1, gcc 3.4:

Код: Выделить всё

 [hello.cpp]
#include <iostream>

int main() {
   std::cout << "Hello, world!" << std::endl;
   return 0;
}


g++ hello.cpp

Все плюс-плюсные хедеры лежат у меня в /usr/include/g++.
Спасибо сказали:
Аватара пользователя
GOster
Сообщения: 38

Re: Первая программа

Сообщение GOster »

Спасибо!!! g++ действительно решил все проблемы!
Спасибо сказали:
Аватара пользователя
edoc_modnar
Бывший модератор
Сообщения: 1638
Статус: Форум больше не посещаю

Re: Первая программа

Сообщение edoc_modnar »

Кстати для того, чтобы не указывать каждый раз перед cout std::, можно сделать так:

Код: Выделить всё


#include <iostream>
using namespace std;
int main() {
  std::cout << "Hello, world!" << std::endl;
  return 0;
}
So long, and thanks for all the fish.
Douglas Adams, The Hitchhiker's Guide to the Galaxy
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Первая программа

Сообщение t.t »

(random_code @ Пятница, 18 Марта 2005, 19:26) писал(а):Кстати для того, чтобы не указывать каждый раз перед cout std::, можно сделать так:

Код: Выделить всё

#include <iostream>
using namespace std;
int main() {
  std::cout << "Hello, world!" << std::endl;
  return 0;
}
Только тогда уж не указывать :D :

Код: Выделить всё

#include <iostream>
using namespace std;
int main() {
  cout << "Hello, world!" << endl;
  return 0;
}
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
Sergey T
Сообщения: 250
ОС: Debian

Re: Первая программа

Сообщение Sergey T »

Я думал, что вместо #include<iostream> надо писать #include<iostream.h>

А потом, зачем начинать с плюс плюс? Не лучше ли с просто Си?
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Первая программа

Сообщение elide »

вместо #include<iostream> надо писать #include<iostream.h>
надо писать как раз #include<iostream>, без всяких там .h
Не лучше ли с просто Си?
ну а это уже личное дело каждого...
слава роботам!
Спасибо сказали:
Аватара пользователя
Sergey T
Сообщения: 250
ОС: Debian

Re: Первая программа

Сообщение Sergey T »

Для elide:
Извиняюсь что еруенду написал. Просто я с C начал. А щас попробовал ппрогу типа "хело ворлд" на плюсплюсе настрочить и действительно, там никаких h не нужно.

зы
ну а это уже личное дело каждого...

Возможно. Просто я в свое время с плюса попробовал начать и понял, что без предварительного знания просто Си там никуда.
А может мне просто такое руководство попалось. Так сказать для неновичков.
Извините за оффтоп.
Спасибо сказали: