2012-06-12 10 views
9

Zastanawiam się, dlaczego mój program C nie drukuje żadnych informacji. Jestem w 100% nowy w programowaniu i mogłem nauczyć się kilku rzeczy w Ruby i Pythonie w ciągu ostatnich kilku tygodni, ale nigdzie nie robię rzeczy w stylu C. Oto całkowita bazowy, prosty program, że każdy uczy się najpierw:Dlaczego nie otrzymuję danych wyjściowych dla bardzo prostego programu Hello World?

#include <stdio.h> 

int main() 

    { 
     printf("Hello World\n"); 
     return 0; 
    } 

Tak mam napisane, że i zapisać jako hello.c. Teraz przejdę do katalogu, w którym się znajduje, a następnie spróbuję:

gcc hello.c 
i nic się nie dzieje - brak błędów, po prostu nic. Jeśli piszę zamiast

gcc hello.c -o hello 

nowy plik wykonywalny jest napisane do mojego katalogu, a kiedy go otworzyć, to wygląda na normalnej linii poleceń, i ma „Hello World” napisano tam, jak się spodziewałem w moim terminalu pierwszy raz.

Próbowałem też zrobić to samo hello.c wykonywalny, ale kiedy to robię, że mam

syntax error near unexpected token `(' 
`int main()' 
+0

Dzięki - tak, bardzo nowe w tym i dziękuję wszystkim za jasną i prostą informację zwrotną. Rozumiem teraz! – user1451632

Odpowiedz

12

Po wpisaniu

gcc hello.c 

i nic się nie dzieje, to należy się spodziewać. A dokładniej, GCC skompiluje plik wykonywalny o domyślnej nazwie, która jest dla mnie a.out. Gdybym był wtedy wpisać ./a.out w linii poleceń, widzę wyjście.

Wydaje mi się, że może tu być nieco większy problem koncepcyjny z Twojego środowiska Ruby/Python. Ruby i Python są językami (zwykle) interpretowanymi, co oznacza, że ​​po utworzeniu pliku skryptu można oznaczyć go jako plik wykonywalny i poprzez some magic system operacyjny uruchomi program, który odczyta pliki i wykona je za Ciebie. C jest jednak skompilowany. Tak więc po uruchomieniu GCC, który pobiera plik źródłowy i przekształca go w plik wykonywalny, z domyślną lub określoną nazwą.W tym momencie nikt nie oczekiwałby żadnego wyniku, chyba że wystąpił problem z procesem kompilacji. Następnie możesz uruchomić ./hello, który jest plikiem wykonywalnym i zobaczyć twoje wyjście.

To również wyjaśnia, dlaczego nie można oznaczyć hello.c jako pliku wykonywalnego i uruchomić go. Najpierw musi zostać skompilowany jako plik wykonywalny. Wygląda na to, że system udaje, że jest to skrypt powłoki, który nie jest i daje błąd składni.

5

po raz pierwszy, plik wykonywalny został nazwany „a.out” (lub „a.exe” na Windows), która jest historyczną domyślną nazwą nadaną plikowi wykonywalnemu przez gcc.

Warto poświęcić trochę czasu na zastanawianie się różnicę między źródłem a wykonywalnego, a między otwarciem i wykonującego też ...

7

gcc hello.c wygeneruje plik o nazwie a.out
gcc hello.c -o hello wygeneruje plik o nazwie hello

Są to pliki wykonywalne, które należy wykonać/uruchomić, aby uzyskać dane wyjściowe.

Run je jako

./a.out lub ./hello

7

gcc hello.c -o cześć określa, że ​​chcesz utworzyć plik wykonywalny o nazwie hello.exe.

Musisz skompilować wszystkie pliki C, a następnie uruchomić plik wykonywalny, aby uruchomić program. W rzeczywistości nie można uruchomić plików .c. Jeśli nie podasz exe, kompiluje się. Fakt, że nie popełniłeś żadnych błędów jest dobrą rzeczą, ponieważ oznacza to, że Twój kod jest poprawny! :)

3

Witamy w programowaniu i przepełnieniu stosu!

gcc hello.c 

kompiluje plik i generuje plik wykonywalny "a.out", ale go nie wykonuje. Dlatego nic więcej się nie działo w linii poleceń.
Aby rozpocząć realizację, trzeba wpisać:

./a.out 

tak samo, jak na „cześć”, jeśli dobrze rozumiem.
Musisz nauczyć się różnicy między kompilacją, łączeniem i wykonaniem, jeśli chcesz programować w C, znaleźć dobrą książkę dla początkujących lub samouczek, to jest tego warte!
Pozdrawiam!

0

Masz błąd

syntax error near unexpected token `(' 
`int main()' 

podczas ustawiania zabezpieczeń na pliku źródłowym hello.c i próbował go uruchomić.

Użycie gcc przekształca plik źródłowy .c do programu binarnego, który można uruchomić.

gcc -o hello hello.c 

Kolejność, której użyłem, nie jest krytyczna. Jestem po prostu przyzwyczajony do kompilacji w ten sposób. Kompilowałeś w ten sposób

gcc hello.c -o hello 

co jest w porządku.

Udana kompilacja i związek utworzony plik wyjściowy o nazwie cześć, która jest, co można uruchomić

./hello 
-1

Czy próbowałeś tym #include<conio.h> i obejmują getch() przed return 0; aby wyświetlić okno terminala.

Powiązane problemy