C++ - nie dzia

Potrzebujesz pomocy z C, C++, perl, python, itp.
virus999
Posty: 60
Rejestracja: 27 grudnia 2009, 19:12

C++ - nie działa kompilowany program pod Linuksem

Post autor: virus999 »

Witam.
Mam pytanie, jaka jest różnica w c++ pomiędzy Windowsem a Linuksem? Chodzi mi o programowanie w c++ są jakieś różnice?
Programowałem zawsze w Windows i nie wiem, czy nie rozczaruje mnie jeśli przejdę na Linuksa i np. w programie Qt Creator mnie coś zdziwi, bo spotkałem się z problemem biblioteki np. gdy wpisałem:

Kod: Zaznacz cały

int nLiczba1,nLiczba2,nWynik;

std::cout << "Podaj pierwszą liczbę: ";
cin >> nLiczba1;

std::cout << "Podaj drugą liczbę: ";
cin >> nLiczba2;

nWynik = nLiczba1 + nLiczba2;
Proste działanie oczywiście to przykład, który ma pokazać prostotę mojego problemu gdy kompiluję program i uruchomię w programie Qt Creator, to gdy wyskoczy mi pierwszy komunikat w naszym programie wpisuje np. 5 i zatwierdzam enterem i nic się nie dzieje.
I tu mam problem nie wiem co jest nie tak? Chociaż to powinno elegancko działać, a tak się dzieje tylko w tym programie, który przypadł mi do gustu. Gdy uruchomię ten program w konsoli to działa bez problemowo. Sam nie wiem, może jakaś poprawna konfiguracja tego programu? Proszę o pomoc.
Czocher
Beginner
Posty: 140
Rejestracja: 26 maja 2007, 23:19

Post autor: Czocher »

Jeżeli programujesz w C/C++ w standardowy sposób (czyli tak jak uczą podręczniki do nauki C/C++) to nie zauważysz różnicy ;) . Pamiętaj tylko, że 1. Dev-C++ to zło i jest przestarzały, stąd niektóre konstrukcje z niego nie będą chciały się kompilować w nowszym GCC.2. Nie używa się system("pause") (i najlepiej żadnych konstrukcji z funkcją 'system' - to chodzenie na skróty przez bardzo niebezpieczne bagna). Zamiast popularnej "Windowsowej" konstrukcji:

Kod: Zaznacz cały

system("pause");
stosuj

Kod: Zaznacz cały

cin.ignore();
cin.get();
A co do twojego programu - zarówno "cin" jak i "cout" należą do przestrzeni nazw "std". Jak zapominasz o pisaniu "std" to lepiej pisz:

Kod: Zaznacz cały

using namespace std;
na początku programu.
virus999
Posty: 60
Rejestracja: 27 grudnia 2009, 19:12

Post autor: virus999 »

Piszę tak jak mówisz, wszystko się dobrze kompiluje itd., lecz gdy włącza się program, który jest pisany na konsolę, wyświetla mi jeden komunikat:

Kod: Zaznacz cały

Podaj Pierwszą Liczbę
Lecz, gdy coś wpiszę i zatwierdzę nic się nie dzieje. Otwierałem także program przez terminal i wszystko cacy. Jednak w tym IDE coś jest nie tak (Qt Creator).

Każdy program, który zrobię okienkowy w Qt działa poprawnie i uruchamia się ale w konsoli już nie.

Obrazek
Czocher
Beginner
Posty: 140
Rejestracja: 26 maja 2007, 23:19

Post autor: Czocher »

Sprawdziłem i rzeczywiście program staje. To jakiś problem z Qt Creatorem - w tym IDE kiepsko się pisze w zwykłym C++, on jest do Qt i tego powinno się trzymać. Ten błąd pewnie ma z tym jakiś związek :P. Nie dociekam, gdyż jeżeli odpali się program spod konsoli to działa:

Kod: Zaznacz cały

czocher@laptop:~/test$ ./test
Podaj pierwszą liczbę: 40
Podaj drugą liczbę: 600
Czyli to wina Creatora ;) .
virus999
Posty: 60
Rejestracja: 27 grudnia 2009, 19:12

Post autor: virus999 »

Nie wnikam już w ten błąd, bawię się teraz Vimem. Poznaję jego możliwości. A tak w ogóle to dziękuję za Twoje zaangażowanie w moje problemy.
ODPOWIEDZ