Ogólne pytania dotyczące C++

Hej, mam dwa pytania dotyczące C++. Ja mam wypracowane na nie swoje odpowiedzi jednak znajomy upiera się przy swoich wersjach. Proszę was o odpowiedzenie mi na następujące pytania:

  • Który kod jest bardziej poprawny?

    int zmienna;

    cin>>zmienna;

    int tablica[zmienna];

czy

int zmienna;

cin>>zmienna;

int *tablica=new int[zmienna];

//operacja na tablicy

delete []tablica;
  • Które środowisko jest “lepsze”, pod wszystkimi względami?

Dev-C++ czy Visual C++

Chciałbym aby wypowiedziało się co najmniej kilka osób.

Z góry dzięki :wink:

Oczywiście bezapelacyjnie VC++, Dev to jest przestarzały badziew.

A co do tego który kod jest najbardziej poprawny… Cóż, najbardziej poprawna w tym miejscu byłaby lista.

Nie powiedziałbym. Kod numer jeden moim zdaniem jest błędny. W VC++ nawet się nie skompiluje:

Co innego w Dev-C++…

Dynamiczne alokowanie tablicy i zwalnianie jej po wyjściu z zakresu(czy w ogóle później) tak jakby to była tablica statyczna to rozszerzenie GCC, które nie jest częścią standardu. IDE tutaj nie ma nic do gadania.

I tak, druga wersja jest “bardziej poprawna”(bardziej zgodna ze standardem).

Dev-C++ jest mało funkcjonalne, przestarzałe i zabugowane. Orwell Dev-C++ jest już mniej zabugowane i dostarczane z nowym kompilatorem, ale to nadal Dev-C++.

Dzięki, dokładnie o taką odpowiedź mi chodziło.

Wiem.

Pierwszy kod jaki podałeś jest poprawny dla dialektu GNU w kompilatorach GCC, wie co zrobić z taką deklaracją, jak ilość komórek tablicy jest zmienną.

Poprzez int tab[x] deklarujesz tablicę na stosie, zostanie usunięta po wyjściu z danego bloku, poprzez new tablica będzie gdzieś tam na stercie, trzeba ręcznie usunąć. Przy tym pierwszym, ten x powinien być stałą, aby skompilowało się w kompilatorach bez tego rozszerzenia (m.in. VC++).

Na początek polecam środowisko Code::Blocks. Darmowe, lekkie, kompilator GCC (MinGW 4.4 bodajże), standardowo nie zamyka okna konsoli po zakończeniu programu (nawet jak wywali błąd), a później sam poeksperymentujesz: dalej C::B, Eclipse, Qt Creator, VS…

Błąd. To zdanie miałoby sens przy porównaniu Eclipse do VS, ale nie przy tym. Dev-C++ to tak stare, niefunkcjonalne i zabugowane IDE, że używanie go jest co najmniej strzałem w stopę.

Zacytowałeś fragment z pytaniem o Dev vs VS, więc ciężko było stwierdzić, że to jest “neutralne”. Szanowaniem czyjejś pracy jest właśnie odradzanie złego oprogramowania, a nie marnowanie czasu innych, by “sami sprawdzili, bo każdy musi do wszystkiego sam dojść”(choć czasami tak naprawdę tylko jedno zdanie jest prawidłowe). Nie zawsze warto odkrywać koła na nowo.

No i nie oszukujmy się, jeśli coś jest marnej jakości, to nie ma co owijać w bawełnę pod przykrywką “szanowania czyjejś pracy”, tylko trzeba o tym mówić. Prosto z mostu.

IMO przewaga deva nad VS jest taka, że w Devie nie trzeba stosować projektu, żeby skompilować 10 linijek kodu, tylko wystarczy sam plik .c/.cpp. Zalety zawsze się znajdą :slight_smile: No i Pacman, czy jak mu tam leciało: całkiem pokaźna baza bibliotek do zainstalowania w podobny sposób, jak na Linuksie.

Ja nie twierdzę, że on nie ma zalet, ale przy jego wadach… :wink: Manager bibliotek jest przydatny, o ile jest w nim dużo bibliotek i są aktualne. Do VS jest NuGet, co prawda tylko dla .NET, ale mam nadzieję, że niedługo pojawi się jego wersja natywna.