Jaki jest najlepszy kompilator kodu C++?

0

Który z kompilatorów do wybrania w Code::Blocks byście polecili?

  • GNU CC?
  • Visual?
  • Borland?
  • może inny?

Nie wiem czy wybrania kompilatora ma wpływ na "różność" błędów przy kompilacji, więc najpierw pytam się was który najbardziej pasowałby mi, mało zawaansowanemu (zgłębiam jeszcze, ale nie praktykuję na codzień, prog. obiektowego, tylko ostaję przy strukturach, tablicach) programiście C++.

0

Na poziomie zupełnie zielonej osoby to nie ma żadnego znaczenia.

0
Pribrov napisał(a)

Nie wiem czy wybrania kompilatora ma wpływ na "różność" błędów przy kompilacji

Nie wiem, czy rozumiem to zdanie dobrze, ale Ty sugerujesz, że w różnych kompilatorach są różne błędy? Język jest jeden, więc i zasady tworzenia kodu dla danego języka są takie same; Jedynie co różnić je może to treść komunikatu o błędzie (błąd jest jeden, ale komunikat o nim w różnych kompilatorach może być inny);

Jeśli nie jesteś zaawansowanym programistą C++ to tak jak napisał @Shalom - nie ma to większego znaczenia; Wybierz ten, który rozumiesz i w którym najlepiej Ci się pracuje;

0

Gcc ma tragiczne komunikaty o błędach, szczególnie jak coś źle pójdzie w szablonach. Clang radzi sobie z tym o wiele lepiej, używam go głównie ze względu na wyświetlanie błędów, ale na Windowsie nie działa najlepiej. Spróbowałbym kompilatora Microsoftu, sam go nie używałem, ale podejrzewam, że jego komunikaty o błędach są bardziej strawne. Większość bibliotek, nawet opensource'owych lepiej działa pod Windowsem w połączeniu z Visualem, więc możesz uniknąć trudnych do wykrycia błędów. Zawsze możesz kompilować na różnych kompilatorach, zwiększy to szanse na dobrą przenośność programu.

0

Użyłem jednak GCC (gdyż szablonów nie umiem tworzyć) i w wierszu:

if (hotseatplayer == player1) { ... }

daje błąd:

expected primary-expression before "==" token
Przeszukując internet nie natrafiłem na opis tego konkretnego błędu. Najbliższy trop prowadził tokenem "=" ( a nie "==" używany przy ifach) i był powodowany złym użyciem define'u:

define zmienna = 56;

a ja define nie używam. Tak więc nie wiem dlaczego mam error.

1

Co do kompilatora ja używam Visual C++ 2010 Ultimate i jest on bardzo dobrym kompilatorem ;) bardzo fajnie się na nim pisze i nawet nie trzeba kompilować by dowiedzieć się że jest błąd (jestem początkującym, ale jak zrobie gdzieś błąd to tak jak office podkreśla jak jest źle napisane słowo) także bardzo go polecam tylko on jest bardzo drogi niestety ;/ .

0

oczywiście najlepszym kompilatorem C++ jest Intel C++ compiler

0

Intel C++ Compiler

0

jest jeszcze dobry kompilator Digiatal Mars:
http://www.digitalmars.com/

0
Pribrov napisał(a)
if (hotseatplayer == player1) { ... }

daje błąd:

expected primary-expression before "==" token
.

Jesteś pewien że po obu stronach znaków równości masz ten sam typ danych (w tym przypadku stringi)?

0
sig napisał(a)
Pribrov napisał(a)
if (hotseatplayer == player1) { ... }

daje błąd:

expected primary-expression before "==" token
.

Jesteś pewien że po obu stronach znaków równości masz ten sam typ danych (w tym przypadku stringi)?

Deklaracja hotseatplayer

enum hotseatplayer { player1, player2 };

Tak, to ten sam typ.

0

To z twojego kodu wychodzi coś takiego

if (hotseatplayer == player1) { ... }

Czyli

if (int == player1) { ... }

Moze spróbuj tak

 hotseatplayer player ;
 player = player1 ;

if (player == player1)
 {
    //

     }

hotseatplayer nie jest zmienną tylko nazwą typu wyliczeniowego .

0

Ahhh, rozumiem. Dziękuję bardzo. No tak, to było tylko zadeklarowanie typu a nie zmiennej. Jeszcze raz dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1