• 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++)

VPS Starter Arubacloud
0 głosów
724 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 174 wizyt
pytanie zadane 26 sierpnia 2015 w C i C++ przez Int_main Bywalec (2,850 p.)
0 głosów
3 odpowiedzi 325 wizyt
0 głosów
1 odpowiedź 204 wizyt
pytanie zadane 16 stycznia 2023 w Python przez kacper1445 Gaduła (4,880 p.)

92,452 zapytań

141,262 odpowiedzi

319,080 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...