Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Przepisuję jakiś kod z książki, np:
#include <iostream.h> void main() { long n; int k; cout << "Liczba całkowita: "; cin >> n; for (k=1; n /= 10; k++); cout << "Liczba cyfr: " << k << endl; }
Zapisuje jako LCyf.cpp
Wpisuję w konsoli: gcc LCyf.cpp -o LCyf.out
I dostaję:
LCyf.cpp:1:22: error: iostream.h: Nie ma takiego pliku ani katalogu LCyf.cpp:3: error: ‘::main’ must return ‘int’ LCyf.cpp: In function ‘int main()’: LCyf.cpp:7: error: ‘cout’ was not declared in this scope LCyf.cpp:8: error: ‘cin’ was not declared in this scope LCyf.cpp:10: error: ‘endl’ was not declared in this scope
Nie mam pojęcia o C++ ani o programowaniu. Dlaczego nie może to się skompilować ? Co zrobić, żeby działało jak powinno?
Offline
Masz chyba stara książkę w której nauczano starej składni w nowej to wygląda tak:
#include <iostream>
int main()
{
long n;
int k;
std::cout << "Liczba całkowita: ";
std::cin >> n;
for (k=1; n/=10; k++);
std::cout << "Liczba cyfr: " << k << std::endl;
}
i kompiluje się nie gcc a g++ nazwa.cpp -o nazwa.out (gcc to do C, g++ C++). Jeżeli szukasz dobrwej książeczki do C++ od podstaw to polecam Symfonię C++ Grębosza - naprawdę wymiata (starsze wersje mozna znaleźć w formacie PDF, najnowszej chyba jeszcze nikt nie zeskanował - koszt od 30 paru zł)
Ostatnio edytowany przez Huk (2009-02-02 00:53:51)
Offline
Dziekuję.
Faktycznie, Twój kod działa.
Książka jest z 2002 roku. Szybko się to wszystko zmienia. Jak Wy nadążacie? ;)
Offline
Hehe ;) googlujemy ;p
Offline
Ja zacząłęm sie uczyć dopiero 2 latka temu (ohh te studia...), tak czy siak obecnie przez jakis czas nie powinno się za wiele zmienić bo doszło do standaryzacji ISO (choc po ostatnich jajkach z OOXML nie wiem jak wiele ta standaryzacja jest warta ;] ), Symfonia o której wcześniej wspomniałem jest własnie w dwóch wersjach "starej" i "Standard" (przy czym kod z obu jest praktycznie taki sam ("Standart" jest obszerniejsza) - chyba Grębosz był zwolennikiem standaryzacji zanim do niej doszło - zresztą ciężko się dziwić), tak więc z niej na bank nauczysz się pożądnie i przyszłościowo.
P.S
Jest jeszcze taka możliwość że książka która masz jest pisana po prostu pod jakiś konkretny kompilator który uznawał swoją standaryzację, nie zgodną z ISO (wszystkie starsze wersje Borland C++ i M$ C++ jak dobrze pamiętam tak własnie robiły), stąd jajka w stylu kod kompilujący się w g++ skompiluje sie i tam ale nie vice/versa.
Offline
uzywaj g++, bo to jest kompilator do c++, gcc jest do "suchego" c, wiec kilka innych rzeczy moze ci sie nie zgadzac/pokrywac jeszcze ;]
I wtracajac swoje 5gr.
Jezeli będzisz uzywal g++ to mozesz dodac linijke "using namespace std; ", nie rozpisujac sie powiem co to da,
mianowicie nie bedziesz musial piszac za kazdym razem "std::XXXX" tylko wtedy wystarczy tak jak miales w pierwszej wersji jaka tu wrzuciles
#include <iostream> // tu nie ma ".h" jak juz kolega zauwazyl, ale nie wiem czy ty zwrociles uwage ;]
// w ksiazce beda jeszcze pewnie math.c > cmath (teraz) i stdio.h > cstdio (teraz)
using namespace std;
int main()
Ale jak napisalem musisz uzywac g++ , bo c nie obsluguje przestrzeni nazw, jak dobrze pamietam.
Offline
taka mala uwaga: gcc to "GNU Compiler Collection" i w oparciu o rozszerzenie wywoluje on odpowiednie kompilatory dla C, C++ i nie tylko ... zatem "gcc program.cpp" skompiluje kod c++ (oczywiscie gdy masz zainstalowany kompilator c++ z "kolekcji" kompilatorow gcc) ... glowna roznica polega na tym z czym domyslnie linkuja i jakie opcje posiadaja te programy (gcc , g++)
Ostatnio edytowany przez bercik (2009-02-05 14:47:12)
Offline
ooo nie wiedzialem
Offline
Strony: 1