• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Program przerywa działanie w połowie (C++)

Object Storage Arubacloud
0 głosów
774 wizyt
pytanie zadane 16 listopada 2021 w C i C++ przez Ign Nowicjusz (120 p.)

Witam.

Ostatnio zaobserwowałem u siebie problem ze skompilowaniem kodu w języku C++. Przy najprostszym programie program zawiesza działanie, czasem się nie uruchamia. Przy sprawdzeniu działania programu z kompilatorem wbudowanym w Dev C++ wszystko działało dobrze.

Podam przykład kodu:

#include <iostream>

using namespace std;
int main()
{
    cout << "Witaj" << endl;
    int x;
    cin >> x;
    cout << "Masz " << x <<"lat";
    return 0;
}

Program się wyłącza, gdy przychodzi czas na wczytanie zmiennej X. Po prostu się okno wyłącza się, nie wiem jak to jeszcze bardziej sprecyzować. Korzystam z kompilatora g++ w wersji (MinGW.org GCC-6.3.0-1) 6.3.0 (output wiersza polecenia.) 

Powinienem zmienić kompilator? Jeżeli to na jaki?

komentarz 16 listopada 2021 przez tkz Nałogowiec (42,000 p.)
Jakie dane przekazujesz? Uruchamiasz program, wpisujesz liczbę całkowitą, klikasz enter i się wywala?
komentarz 16 listopada 2021 przez Ign Nowicjusz (120 p.)
Przekazuję dane całkowitoliczbowe typu int, normalnie jak nazwałeś. Wpisuję np. liczbę 9, klikam enter i zamiast dostać output "Masz 9lat" program wywala. Program uruchamiam normalnie jako świeżo skompilowany plik konsolowy, bez żadnego interfejsu graficznego.
komentarz 16 listopada 2021 przez Oscar Nałogowiec (29,290 p.)
Co to znaczy "wywala"? Znika okienko? - czasem ludzie dopisują na końcu getch(), by program jeszcze poczekał, osobiście polecam używanie debuggera zamiast modyfikowania programu do podobnych celów.
komentarz 16 listopada 2021 przez Ign Nowicjusz (120 p.)
Znika okienko. Dałoby się to naprawić np. zainstalowaniem nowszej wersji kompilatora?
komentarz 16 listopada 2021 przez Oscar Nałogowiec (29,290 p.)
Może spróbuj "ręcznego" podejścia do programowania w C/C++. Plik z kodem źródłowym masz gdzieś zapisany, w jakimś katalogu. Otwórz okienko konsoli (nie jestem pewny jak to się robi w windzie, można albo znleźć odpowiednią ikonkę, albo wydać polecenie "cmd" w okienku "uruchom"), przejdź do tego katalogu, ręcznie uruchom kompilator. Na początku, gdy programy są małe, jednoplikowe, możesz od razu uruchomić kompilator z linkerem. Dostanie plik .exe, który po prostu uruchom wpisując jego nazwę jako polecenie. To jest odpowiednie środowisko uruchamiania programów konsolowych. Okienko ci nie zniknie, bo będzie czekać na następne polecenia.
komentarz 17 listopada 2021 przez Ign Nowicjusz (120 p.)
Dokładnie w ten sposób to robię. Załóżmy, że kod źródłowy mam zapisany e folderze "abc". W owym folderze kombinacją klawiszy ctrl+ppm uruchamiam okienko PowerShell i wpisuję polecenie:

g++ [nazwa_programu.cpp]

I dzieje się co się dzieje. Program niby się tworzy w wybranym folderze o nazwie "a" (jak powinno być), ale działa tak, jak to opisałem na górze.
komentarz 17 listopada 2021 przez Oscar Nałogowiec (29,290 p.)
To fajnie. Nazwę "a" możesz zmienić dodając parametr -o "nazwa".

Napisz jeszcze jak uruchamiasz program.
komentarz 17 listopada 2021 przez Ign Nowicjusz (120 p.)
Nie chodzi mi o to, że powstaje nazwa "a", opisuję tylko proces. Program uruchamiam dwukrotnie klikając na niego lewym przyciskiem myszy.
komentarz 17 listopada 2021 przez Oscar Nałogowiec (29,290 p.)
To może uruchamiaj go wpisując nazwę programu w tym samym okienku PowerShella co uruchamiałeś kompilator.
komentarz 17 listopada 2021 przez Ign Nowicjusz (120 p.)
Wszystko działa poprawnie, gdy używam PowerShella do uruchamiania. Ale co powinienem zrobić, uruchamiać program, klikając na niego lewym przyciskiem myszy, tak jak np. przeglądarkę? Czasami błąd się nie pojawia, gdy dodam na koniec programu "system("pause")". Może coś powinienem ustawić w Windowsie, by program nie znikał jak opisałem na górze?
komentarz 17 listopada 2021 przez Ign Nowicjusz (120 p.)
Zauważyłem na swoim komputerze następującą przypadłość. Otóż, gdy skompilowałem program za pomocą Dev C++, jak wiadomo, program przy pierwszym uruchomieniu działa poprawnie. Za to gdy uruchamiam ten sam program, klikając na niego lewym przyciskiem myszy w odpowiednim folderze, także się wyłącza. Może coś powinienem ustawić w Windowsie? Na logikę to jest błąd systemu operacyjnego, a nie samego kompilatora.

1 odpowiedź

0 głosów
odpowiedź 17 listopada 2021 przez Hesoyam Użytkownik (620 p.)

Działa sprawdzone na: Code::Blocks 20.03 - GNU GCC Compiler.

komentarz 17 listopada 2021 przez Ign Nowicjusz (120 p.)
ALE nie działa na mojej wersji kompilatora. Pewnie powinienem ściągnąć nowszą wersję jeżeli takowa istnieje.
1
komentarz 17 listopada 2021 przez Hesoyam Użytkownik (620 p.)
Albo zainstaluj sobie Code::Blocks razem z compilatorem i wszystko. Później będziesz kombinował z kompilatorem.

Podobne pytania

+1 głos
3 odpowiedzi 181 wizyt
pytanie zadane 26 sierpnia 2015 w C i C++ przez Int_main Bywalec (2,850 p.)
0 głosów
3 odpowiedzi 326 wizyt
0 głosów
1 odpowiedź 216 wizyt
pytanie zadane 16 stycznia 2023 w Python przez kacper1445 Gaduła (4,880 p.)

92,536 zapytań

141,377 odpowiedzi

319,454 komentarzy

61,922 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...