Strona 1 z 2
[C++] funkcja main
: 02 lis 2010, 18:22
autor: Dominik007
Witam.
Uczę się C++ z książki Jerzego Grębosza "Symfonia C++ standard". Przygodę z linuxem zacząłem od nie dawna. W książce jest taki prosty program:
Kod: Zaznacz cały
#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?
Odp: [C++] funkcja main
: 02 lis 2010, 18:24
autor: Tares
spróbuj c++ nazwa_programu -o plik_wyjsciowy
a potem ./plik_wyjsciowy
Odp: [C++] funkcja main
: 02 lis 2010, 18:35
autor: Dominik007
Zrobiłem tak jak piszesz czyli w konsoli
Kod: Zaznacz cały
c++ /home/XXX/Katalog/plik_zrodlowy -o plik_wyjsciowy
a potem ./plik_wyjsciowy i wynik to: No such file or directory.
A dokładnie wygląda to tak:
Kod: Zaznacz cały
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
Odp: [C++] funkcja main
: 02 lis 2010, 18:56
autor: leon1313
daj z opcją
-Wall lub
-Wextra, zobaczymy co pokaże.
czyli np :
Odp: [C++] funkcja main
: 02 lis 2010, 18:59
autor: kampo
Zamiast std::cout... na poczatku instrukcji(?) dodaj using namespace std;, czyli:
Kod: Zaznacz cały
#include <iostream>
int main()
{
using namespace std;
cout<<"Stweardzie, ilu leci pasazerów?";
...
Wtedy nie będziesz musiał za każdym razem pisać "std::...".
Skompilowalem u siebie i dziala normalnie,ale używam QtCreator.
kampo@tofik ~/projects/Test2 $ ./Test2
Stweardzie, ilu leci pasazerów?4
Pasazer nr 1 prosze zapiac pasy!
Pasazer nr 2 prosze zapiac pasy!
Pasazer nr 3 prosze zapiac pasy!
Pasazer nr 4 prosze zapiac pasy!
Skoro wszyscy juz zapieli, to ladujemy.
kampo@tofik ~/projects/Test2 $ ./Test2
Na koncu linijki "Skoro wszyscy juz zapieli, to ladujemy." dodaj \n przed zamknięciem nawiasu.
Odp: [C++] funkcja main
: 02 lis 2010, 19:04
autor: Dominik007
Gdy wpisuje:
Kod: Zaznacz cały
g++ /home/XXX/Katalog/plik_zrodlowy.cpp -Wall -o plik_zrodlowy
lub
Kod: Zaznacz cały
g++ /home/XXX/Katalog/plik_zrodlowy.cpp -Wall -o plik_wynikowy
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.
@kempo
Ale ja nie chce dodawać
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.
Odp: [C++] funkcja main
: 02 lis 2010, 19:18
autor: leon1313
Jak przechodzi do następnej linii bez alarmów, to znaczy , że skompilowało się bez problemów

Odp: [C++] funkcja main
: 02 lis 2010, 19:26
autor: Dominik007
To dobrze ale dlaczego nie wyświetla programu?
Odp: [C++] funkcja main
: 02 lis 2010, 19:34
autor: leon1313
a daj "ls -al" w katalogu, którym jesteś..
Odp: [C++] funkcja main
: 02 lis 2010, 19:47
autor: Dominik007
Kod: Zaznacz cały
drwxr-xr-x 37 dominik dominik 4096 2010-11-02 19:27 .
drwxr-xr-x 4 root root 4096 2010-10-25 17:36 ..
drwx------ 3 dominik dominik 4096 2010-10-26 17:28 .adobe
-rwxr-xr-x 1 dominik dominik 9142 2010-11-02 19:27 a.out
-rw------- 1 dominik dominik 3397 2010-11-02 18:29 .bash_history
-rw-r--r-- 1 dominik dominik 220 2010-10-25 17:36 .bash_logout
-rw-r--r-- 1 dominik dominik 3103 2010-10-25 17:36 .bashrc
drwx------ 10 dominik dominik 4096 2010-11-02 17:56 .cache
drwxr-xr-x 15 dominik dominik 4096 2010-10-27 19:29 .config
drwx------ 3 dominik dominik 4096 2010-10-25 17:57 .dbus
-rw-r--r-- 1 dominik dominik 41 2010-11-02 17:56 .dmrc
drwxr-xr-x 2 dominik dominik 4096 2010-10-29 13:31 Dokumenty
-rw------- 1 dominik dominik 16 2010-10-25 17:57 .esd_auth
drwxr-xr-x 8 dominik dominik 4096 2010-10-26 16:59 .evolution
-rw-r--r-- 1 dominik dominik 179 2010-10-25 17:36 examples.desktop
drwxr-xr-x 2 dominik dominik 4096 2010-10-27 14:14 .fontconfig
drwx------ 4 dominik dominik 4096 2010-11-02 17:56 .gconf
drwx------ 2 dominik dominik 4096 2010-11-02 18:33 .gconfd
drwxrwxrwx 10 dominik dominik 4096 2010-08-18 19:02 geany-0.19.1
-rw-r----- 1 dominik dominik 0 2010-10-30 19:37 .gksu.lock
drwx------ 8 dominik dominik 4096 2010-10-31 22:29 .gnome2
drwx------ 2 dominik dominik 4096 2010-10-25 17:58 .gnome2_private
drwx------ 2 dominik dominik 4096 2010-10-25 18:03 .gnupg
drwxr-xr-x 2 dominik dominik 4096 2010-10-28 13:46 .gstreamer-0.10
-rw-r--r-- 1 dominik dominik 143 2010-11-02 17:56 .gtk-bookmarks
dr-x------ 2 dominik dominik 0 2010-11-02 17:56 .gvfs
-rw------- 1 dominik dominik 5134 2010-11-02 17:56 .ICEauthority
drwxr-xr-x 2 dominik dominik 4096 2010-10-25 17:58 .icons
drwx------ 4 dominik dominik 4096 2010-10-26 19:03 .kadu
drwx------ 3 dominik dominik 4096 2010-10-25 18:07 .local
drwx------ 3 dominik dominik 4096 2010-10-26 17:28 .macromedia
drwx------ 3 dominik dominik 4096 2010-10-26 16:59 .mission-control
drwx------ 4 dominik dominik 4096 2010-10-25 18:12 .mozilla
drwxr-xr-x 2 dominik dominik 4096 2010-10-25 17:57 Muzyka
drwxr-xr-x 2 dominik dominik 4096 2010-10-25 17:57 .nautilus
-rw-r--r-- 1 dominik dominik 1201 2010-10-26 17:03 .nvidia-settings-rc
drwxr-xr-x 3 dominik dominik 4096 2010-10-25 18:11 Obrazy
drwxr-xr-x 3 dominik dominik 4096 2010-10-27 16:26 .openoffice.org
-rwxr-xr-x 1 dominik dominik 9142 2010-11-02 19:02 plik_wynikowy
-rwxr-xr-x 1 dominik dominik 9142 2010-11-02 19:27 plik_zrodlowy
-rw-r--r-- 1 dominik dominik 7794 2010-10-27 19:37 plik_zrodlowy.cpp
-rw-r--r-- 1 dominik dominik 3104 2010-11-02 18:28 plik_zrodlowy.o
drwxr-xr-x 3 dominik dominik 4096 2010-10-28 15:18 Pobrane
-rw-r--r-- 1 dominik dominik 37 2010-10-26 17:44 .printer-groups.xml
-rw-r--r-- 1 dominik dominik 675 2010-10-25 17:36 .profile
drwxr-xr-x 2 dominik dominik 4096 2010-10-25 17:57 Publiczny
drwxr-xr-x 4 dominik dominik 4096 2010-11-02 19:43 Pulpit
drwx------ 2 dominik dominik 4096 2010-11-02 17:56 .pulse
-rw------- 1 dominik dominik 256 2010-10-25 17:57 .pulse-cookie
-rw------- 1 dominik dominik 21140 2010-11-02 19:27 .recently-used.xbel
drwx------ 2 dominik dominik 4096 2010-10-25 18:03 .ssh
-rw-r--r-- 1 dominik dominik 0 2010-10-25 18:01 .sudo_as_admin_successful
drwxr-xr-x 2 dominik dominik 4096 2010-10-25 17:57 Szablony
drwxr-xr-x 3 dominik dominik 4096 2010-10-26 16:59 .themes
drwx------ 5 dominik dominik 4096 2010-10-25 18:11 .thumbnails
drwx------ 2 dominik dominik 4096 2010-10-27 14:20 .update-notifier
-rw-r--r-- 1 dominik dominik 2972 2010-10-26 17:33 .usbcreator.log
drwxr-xr-x 2 dominik dominik 4096 2010-10-25 17:57 Wideo
-rw-r--r-- 1 dominik dominik 559 2010-10-29 19:26 .xscreensaver-getimage.cache
-rw------- 1 dominik dominik 112897 2010-11-02 19:45 .xsession-errors
-rw------- 1 dominik dominik 683661 2010-10-31 22:29 .xsession-errors.old
No i co to daje?
Czy o to chodziło?
Kod: Zaznacz cały
dominik@DD:~$ ls -al /home/XXX/Katalog/plik_zrodlowy.cpp
-rw-r--r-- 1 dominik dominik 296 2010-11-02 18:28 /home/XXX/Katalog/plik_zrodlowy.cpp
Odp: [C++] funkcja main
: 02 lis 2010, 19:57
autor: borzole
..ehh
Kod: Zaznacz cały
-rwxr-xr-x 1 dominik dominik 9142 2010-11-02 19:27 a.out
Kod: Zaznacz cały
-rwxr-xr-x 1 dominik dominik 9142 2010-11-02 19:02 plik_wynikowy
-rwxr-xr-x 1 dominik dominik 9142 2010-11-02 19:27 plik_zrodlowy
poza tym wystarczyło w Geany nacisnąć F5 po kompilacji
Odp: [C++] funkcja main
: 03 lis 2010, 17:59
autor: Dominik007
Faktycznie działa F5. Sorry nie wiedziałem.
Po za tym? To znaczy co mam z tym zrobić co napisałeś?
Dlaczego w kompilatorze zaznacza mi strzałkę przy funkcji main? Czy to oznacza coś ważne - błąd?
Odp: [C++] funkcja main
: 03 lis 2010, 21:54
autor: beluosus
Dominik007 pisze:Zrobiłem tak jak piszesz czyli w konsoli
Kod: Zaznacz cały
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.
PS
Nie w kompilatorze tylko edytorze. Poza tym czytaj warningi/errory.
Odp: [C++] funkcja main
: 08 lis 2010, 11:22
autor: Dominik007
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?
EDIT:
Może ktoś odpowiedzieć?
Odp: [C++] funkcja main
: 08 lis 2010, 11:35
autor: beluosus
beluosus pisze:Poza tym czytaj warningi/errory.
Bez tych informacji prawdopodobnie nikt Ci nie pomoże.
Odp: [C++] funkcja main
: 09 lis 2010, 10:17
autor: Dominik007
Ok. Tylko że ja nie widzę tutaj erroru po za żółtą strzałką przy funkcji int main () oraz po lewej "symbole" - "funkcje" - "main [4]".
Odp: [C++] funkcja main
: 09 lis 2010, 11:33
autor: borzole
zrób fotkę, bo nie wiadomo o co chodzi
Odp: [C++] funkcja main
: 10 lis 2010, 20:13
autor: Hakerpawel
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.
Odp: [C++] funkcja main
: 12 lis 2010, 10:18
autor: Dominik007
Podaje zdjęcie:
http://zapodaj.net/fe7a672ad001.png.html
O to mi chodzi. Widzicie po lewej stronie w symbolach main i w 4 linijce strzałkę przy main?
Odp: [C++] funkcja main
: 12 lis 2010, 11:35
autor: malek99
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