Czy to wirus?


#1

Zakupiłem książkę " Symfonia C++" i pierwszy program który tak jest to :

Przepisałem go do Dev-C++ i gdy go komplikuje Arcavira wykrywa mi właśnie wirusa w tym pliku .Dlaczego tak jest?

I jeszcze jedno . Gdy wyłączę antywirusa i uruchomię program napis wyskakuje tylko na krótką chwile . W książce pisze że na ekranie powinien wyskoczyć napis. Tak powinno być ?


(Fiołek) #2

To nie jest poprawny program C++. Źle przepisałeś.

Jeśli Dev-C++ nie jest zarażony, to jest to fałszywy alarm.

Tego się nie da skompilować(no chyba, że ten start MinGW domyślnie dla funkcji ustawia typ zwracany na int). Napis się pojawia, tylko konsola się od razu zamyka. Normalne.


#3

Da się to jakoś zatrzymać , znaczy żeby na konsola nie zamykała tego


(Sawyer47) #4

Prawdopodobnie masz starą wersję Symfonii albo źle przepisałeś. Radzę poszukać Symfonii C++ Standard - uaktualnionej edycji.

Co do konsoli to logicznym rozwiązaniem jest najpierw otworzyć konsole i z niej uruchamiać programy.


#5

A polecacie jakieś inne książki o programowaniu ?

Widziałem jeszcze książke " C++ dla każdego " Co o niej myślicie?


(system) #6

W C/C++ o ile nie podano typu który funkcja zwraca to kompilator przyjmuje int jako domyślny.

(no chyba że kompilator nie jest zgodny ze standardem)

w Dev-Cpp trzeba albo ostawić w opcjach ze biblioteka stl będzie użyta, lub w programie po include'ach dodać:

using namespace std;

okno się zamyka, ponieważ program po wyświetleniu komunikatu się kończy a windows zamyka okna zakończonych programów. aby temu zapobiec przed zakończeniem dać:

cin.get();

#7

Mam książke C++ Symfonia ale nie mam standart . Czym rożni się programowanie a programowanie zgodne z ISO ??


(Sawyer47) #8

? Chyba standard. Obecna wersja standardu i wcześniejsza wersja różnią się nieco. Różnią się przynajmniej na tyle, że podczas kompilacji starego kodu kompilator może generować ostrzeżenia, choć stary kod powinien się kompilować. Najlepiej uczyć się obecnie obowiązujących standardów. Co więcej obecnie rozwijana jest nowa wersja standardu C++ o roboczej nazwie C++0x, więc lepiej być na czasie.


(Fiołek) #9

@13tySmok: w nowych standardach tego nie ma(przynajmniej wg Visual C++ 2005/2008 i G++(jeden z najnowszych), standard też chyba o tym mówi, ale nie mogę podać odpowiedniego fragmentu).


(Sawyer47) #10

Hmm nie wydaje mi się, choć oczywiście nie wiem w 100 procentach.

W każdym razie przy kompilacji "main(){}" g++-4.3 -Wall wyrzuca

Może w C tak jest, ale raczej nie w C++. Np. wiem, że kiedyś można było ominąć typ int przy statycznych zmiennych (a może stałych? Nie pamiętam dokładnie), tzn. domyślnie kompilator uznawał, że jest to typ int, ale już nie można tak pisać. Ogółem dobrze jest napisać "int main" nawet jeśli któryś ze standardów dopuszcza pominięcie typu zwracanego.