Dev C++ nie kompiluje poprawnie za pierwszym razem


(Allinone90) #1

Witam, przejde od razu do konkretow. Pisze podstawowy program w ANSI C uzywajac kompilatora Dev C++. Gdy napisze program np. taki (zaczynam nauke:D)

/* zamiana 2 stopy na cale*/

#include 

int main(void)

{

    int stopy,cale;

    stopy = 2;

    cale = 12*stopy;

    printf("%d stopy rownaja sie %d calom! .",stopy,cale);

    system("pause");

    return 0;    

}

przy kompilacji wyswietal tylko napis zeby nacisnac dowolny klawisz a nie wyswietla juz tego co w printf. Aby to wyswietlic nie nalezy tylko zamknac zakladke programu i uruchomic plik .c tylko za kazdym razem musze uruchamiac na nowo komilator aby wszystko sie wyswietlilo poprawnie. Prosze o pomoc jak z tym sie uporac?


(Airborn) #2

dp90 , proszę poprawić tytuł tematu na konkretny, mówiący dokładniej o problemie. W przeciwnym wypadku temat zostanie usunięty.


([alex]) #3

Po uruchomieniu tego z poziomu IDE tak czy owak powstaje plik exe. Możesz uruchamiać ten program a nie *.c


(Allinone90) #4

Z plikiem .exe jest tak samo. Dopiero po drugiej kompilacji gdy uruchomie Dev ponownie i skompiluje ponownie to wtedy exe dziala poprawnie.


([alex]) #5

A po pierwszej kompilacji masz jakiś komunikat? Nie powstaje exe po pierwszej kompilacji?


(Allinone90) #6

powstaje exe. wszystkie pliki powstaja, kompiluje sie wszystko. Nawet dalej zgodnosc z ASNI C no i musze daelj wlaczac program od nowa...


([alex]) #7

To co znika ten exe? Nie rozumiem z czym masz problem i poco kompilujesz po raz drugi skoro masz ten exe.


(Allinone90) #8

Napisze od nowa. Pisze po prostu podstawowy program miedzy innymi z system("pasue") po to by zobaczyc efekt programu a nie zeby smignal tylko przed oczyma. Kompiluje program. Na dysku tworza sie wszystkie pliki ktore sie powinny utworzyc i wyskakuje okienko tylko z trescia odnoszaca sie do: system("pause") a nie wyskakuje juz to co napisalem w programie tzn. np. jakis tekst. Jesli nie wylacze programu i uruchomie .exe ktory sie utworzyl to wyskoczy mi znow tylko tresc odnoszaca sie do system("pause"). Zeby wszystko zadzialalo jak trzeba musze wylaczyc program. Wlaczyc go na nowo, skapilowac na nowo i wtedy dopiro wszsystko sie kompiluje jak trzeba i .exe dziala jak trzeba. Teraz to jasno wytluamczylem wiec co radzicie:D?


([alex]) #9

Chyba jest oczywistym że nie możesz na nowo skompilować program który jest w tej chwili uruchomiony, ponieważ do uruchomionego pliku jest dostęp tylko do odczytu.


(Allinone90) #10

No ale jak wylaczam program i uruchamiam .exe za pierszym razem to dalej jest klopot. Musze go drugi raz wlaczyc z rozszerzenia .c i skmpilowac zeby poprawnie sie skomilowal i poprawnie chodzil .exe


([alex]) #11

Chyba nadal nie kumam o co ci chodzi, ponieważ wszystko nazywasz programem:

  • Kompilator,

  • Źródło programu,

  • Wynikowy program.

Często nie da się zrozumieć który z nich masz na myśli.


(Allinone90) #12

Heh teraz postaram sie to opisac jak najdokladniej: Wlaczam kompilator, pisze taki o to podstawoway program:

#include 

int main (void)

{

 printf ("Hello World!");

system("pause"); 

return 0;

}

Nastepnie wciskam F9 aby skompilowac program. Miedzy czasie pyta mnie gdzie zapisac pliki itd. Wskazuje jakies miejsce. No i jak juz wskaze miejsce to sie kompiluje bo wciasnalem wczesneij F9. Na ekranie pozuje sie napis:

Aby kontynuaowac nacisnij dowolny klawisz...

A powinno sie pojawic

Hello World!Aby kontynuaowac nacisnij dowolny klawisz...

Nastepnie stwierdzilem ze moze dlatego ze kod zrudlowy znajduje sie w kompilatorze. No to zamknalem zakladke z kodem zrudlowym w kompilatorze i uruchomilem program wynikowy(np. plik.exe). Po czym na ekranie wyskoczylo

Aby kontynuaowac nacisnij dowolny klawisz...

a nie to co powinno wyskoczyc czyli

Hello World!Aby kontynuaowac nacisnij dowolny klawisz...

Nawet kilkakrotna kompilacja nic nie dala. Pozniej doszedlem do tego ze aby kompilator poprawnie skomilowal i plik.exe poprawnie wyswietlal to co ma wyswietalc musze zamknac kompilator i na nowo go uruchomic nastepnie wczytac kod zrudlowy i ponownie skompilowac...wtedy juz kompiluje poprawnie i wsywietla co co powinno wyswietlic i wtedy przy uruchomieniu plik.exe rowniez wyswietla to co powinno wyswietlic. Caly problem polega na tym zeby zrobic "cos" aby nie trzeba bylo za kazdym razem wylaczac kompilaora i go wlaczac. Wyjasnione tak ze bardziej sie nie da. Czekam na jakies odpowiedzi i z gory dzekuje.


(Kontakt) #13

nie definiujesz co ten printf ma wyświetlić

#include 

#include 

int main()

{

printf ("%s", "Hello World!");

system("pause");

return 0;

}

(Allinone90) #14

No wlasnie ma wyswietlic napis a go nie wyswietla za pierwszym razem. Opis wyzej.

-- Dodane 27.02.2010 (So) 11:24 --

Dobra przerzuciłem sie na inny kompilator. Szkoda mojego i waszego czasu. Wszystkim ktorzy chcieli pomoc bardzo dziekuje.


(Kontakt) #15

Z tym kodem, który Ci napisałem wyżej działa, bo sam sprawdzałem na Dev C++.


(kijek) #16

Od kiedy Dev jest kompilatorem?


(Kontakt) #17

No, a nie wiesz? ;D Od wtedy gdy ludzie zabierają się za programowanie :wink: Bo przecież łatwiej "informatykowi" w szkole powiedzieć uruchomcie kompilator, niż IDE :stuck_out_tongue_winking_eye:


([alex]) #18

A gdzie ty takie coś przeczytałeś?

Jeżeli ja powiem: - "Ten post napisano ręką kijka.", to też spytasz od kiedy kijek jest ręką ?

Przypominam że Dev-Cpp się nie odmienia.


(somekind) #19

Obstawiam, że tutaj:

Słusznie. I mam nadzieję, że nigdy do tego badziewia nie wrócisz. :slight_smile:

Takie dziwne zachowanie może wynikać z nieprawidłowej instalacji, konfiguracji SO, jakiegoś nieokreślonego błędu, albo też z faktu, że Dev-C++ jest starym, nierozwijanym, zabugowanym i niestabilnym programem.

To tak, jakbyś kupił na skupie złomu syrenkę i dziwił się, że Ci nie chce odpalić.

Tylko mała uwaga - kompilator, to program zamieniający kod źródłowy w plik wykonywalny. To, co Ty nazywasz kompilatorem (i co próbuje udawać badziewie zwane Dev-C++), to IDE - zintegrowane środowisko programistyczne. Czyli program pełniący m.in. funkcje edytora kodu źródłowego, debuggera, a także umożliwiający kompilowanie kodu przy pomocy kompilatora (który wciąż jest zewnętrznym programem, często do IDE dołączonym).

Mam nadzieję, że coś rozjaśniłem.