#include <iostream>
int main()
{
std::cout<<"Stweardzie, ilu leci pasazerów?";
int ile;
std::cin>>ile;
int i;
for(i=1;i<=ile; i=i+1)
{
std::cout<<"Pasazer nr "<< i <<" prosze zapiac pasy! \n";
}
std::cout<<"Skoro wszyscy juz zapieli, to ladujemy. ";
}
Ładnie się kompiluje i wyraźnie w kompilatorze Geany pokazuje kompilacja powiodła się, jednak w funkcji wyskakuje main. Próbowałem aby uruchomić program ale nie chce się uruchomić. Wpisywałem:
Możecie mi powiedzieć czy gdzieś zrobiłem problem w programie (chociaż wg książki tak właśnie jest), czy jest ok, a po prostu nie umiem uruchomić programu?
dominik@DD:~$ c++ /home/XXX/Katalog/plik_zrodlowy -o plik_wyjsciowy
/home/XXX/Katalog/plik_zrodlowy: In function `_start':
(.text+0x0): multiple definition of `_start'
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/crt1.o:(.text+0x0): first defined here
/home/XXX/Katalog/plik_zrodlowy: In function `_fini':
(.fini+0x0): multiple definition of `_fini'
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/crti.o:(.fini+0x0): first defined here
/home/XXX/Katalog/plik_zrodlowy:(.rodata+0x0): multiple definition of `_IO_stdin_used'
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/crt1.o:(.rodata.cst4+0x0): first defined here
/home/XXX/Katalog/plik_zrodlowy: In function `__data_start':
(.data+0x0): multiple definition of `__data_start'
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/crt1.o:(.data+0x0): first defined here
/home/XXX/Katalog/plik_zrodlowy: In function `__data_start':
(.data+0x8): multiple definition of `__dso_handle'
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/crtbegin.o:(.data+0x0): first defined here
/home/XXX/Katalog/plik_zrodlowy: In function `_init':
(.init+0x0): multiple definition of `_init'
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/crti.o:(.init+0x0): first defined here
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/crtend.o:(.dtors+0x0): multiple definition of `__DTOR_END__'
/home/XXX/Katalog/plik_zrodlowy:(.dtors+0x8): first defined here
/usr/bin/ld: warning: Cannot create .eh_frame_hdr section, --eh-frame-hdr ignored.
/usr/bin/ld: error in /home/XXX/Katalog/plik_zrodlowy(.eh_frame); no .eh_frame_hdr table will be created.
collect2: ld returned 1 exit status
dominik@DD:~$ ./plik_wyjsciowy
bash: ./plik_wyjsciowy: No such file or directory
Przechodzi mi do następnej linii w konsoli, nic nie wyświetla.
Czy może być tak, że brakuje mi jakichś wtyczek, dodatków do kompilatora?
Ściągałem kompilator z neta nie z menadżera pakietów.
chce sprawdzić tak jak działa teraz w książce. Po za tym, że dodam to co mówisz nic mi to nie da prócz tego, że nie będę pisał std i będę je musiał usunąć z każdej linijki. Do tego dojdę przerabiając książkę, na razie nie wiem dlaczego nie mogę uruchomić programu.
c++ /home/XXX/Katalog/plik_zrodlowy -o plik_wyjsciowy
a potem ./plik_wyjsciowy i wynik to: No such file or directory.
Dlaczego nikt na to uwagi nie zwraca? Po pierwsze używasz polecenia c++ zamiast g++, po drugie kompilujesz program w konkretnym katalogu, a wykonujesz program z obecnego (CWD) katalogu co jak widać nie pokrywa się.
Dominik007 pisze:Dlaczego w kompilatorze zaznacza mi strzałkę przy funkcji main? Czy to oznacza coś ważne - błąd?
Pewnie dlatego, że main() to funkcja, a funkcje zwracają wynik - na końcu powinieneś zwrócić zero.
Dzięki kolego teraz działa
Jest jednak jeden mały problem i tak jest przy funkcji main znacznik, błąd nawet po dodaniu return 0;
Co może być spowodowane?
Jakbys uzyl jakiegos IDE bys sie martwil tylko o poprawnosc kodu i programu. Polecam Code::Blocks poczatkujacym i masz 0 problemow z kompilacja . Jak juz bedziesz Zawodowo programowal to zapewnie bedziesz musial zapoznac sie z Microsoft Visual Studio C++.
Co do twojego problemu zawsze pisz tresc bledu, ulatwia to innym analize tego co u Ciebie nie dziala.
tak troche abstrahujac od tematu - uzywanie goto jest bardzo niezalecane i bardzo czesto prowadzi do bledow, wobec tego proponuje zebys po skonczeniu case dal break a calosc w jakims while z warunkiem na zakonczenie programu