[C++] Najprostsze programy a różne kompilatory


(Jooooooozek) #1

Czesc,

mam pewną sprawę, z którą dość często się spotykam. Mianowicie na wielu forach, jeżeli ktoś prosi o pomoc w jakimś programie w C++ (nawet najprostszym, np. czytającym z pliku wartości do tablicy i sortującym je), to czasem osoby pytają się w jakim środowisku (kompilatorze) ma to być wykonane. Czy w Builderze czy w Visualu itp...

Dlaczego :?: Przecież tak proste programy, wykorzystują tylko czysty C++... Są nawet tutaj znaczące róznice - bo ja się z tym jeszcze nie spotkałem :?


([alex]) #2

Ponieważ nie istnieje żaden kompilator który spełnia wszystkie standardy (przynajmniej przy ustawieniach domyślnych).

A ponieważ każdy umieszczający posty na forum przeważnie przyzwyczaił się do konkretnego kompilatora, to piszę z użyciem tego co proponuje konkretny kompilator.


(Marcin 110) #3

Są tu zebrane wyniki kompilacji i działania różnych testów z użyciem bibliotek boost (oparte wyłącznie na standardzie C++)

http://www.boost.org/development/tests/trunk/developer/summary.html

Od razu rzuca się w oczy, że w przypadku np. Borlandu wina wcale nie musi leżeć po stronie użytkownika. Choć moim zdaniem, w wielu prostych przypadkach wypytywanie o kompilator jest przesadą.


([alex]) #4

flash4gordon , w linku który podałeś nie są testowane "najprostsze programy", o których mowa w tym temacie.

Aczkolwiek wyraźnie pokazuje to "niekompatybilność kompilatorów" jeżeli można tak nazwać to zjawisko. W każdym razie chodzi o to że w każdym kompilatorze pewne rzeczy są traktowane inaczej. Jeżeli ktoś zna w pewnym stopniu język C++ to przerobienie niewielkiego kodu pod inny kompilator na podstawie błędów i ostrzeżeń pokazywanych przez kompilator jest niewielkim problemem. Co innego kiedy kod jest bardzo duży, wtedy przejście na inny kompilator jest czasami wręcz niemożliwe.


(Marcin 110) #5

alex , dlatego napisałem

Co do linku, jak rozumiesz "niekompatybilność kompilatorów", skoro wszystkie powinny dążyć do pełnej zgodności ze standardem?

BTW: Powód oblania testu regex przez gcc :wink:


([alex]) #6

Tak jak powiedziałeś: - "powinny dążyć", ale niestety nie nadążają :lol:


(Kozokslawomir) #7

Każdy kompilator produkuje swój WŁASNY, UNIKALNY kod pod dany system i architekturę.

Aha, dowiedziałem się niegdyś, że kompilacja to nie proces kod źródłowy -> kod maszynowy, ale oprócz tego może być przypadek kod języka X -> kod języka Y (co wydaje się chyba logiczne, bo nie wydaje mi się żeby kod HLL'a był od razu kompilowany do maszynowego).


([alex]) #8

A co to ma wspólnego z tematem? Dyskusja dotyczy niekompatybilności kompilatorów języka C++, mimo że powinie trzymać ostatni standard.