2012-04-05 18 views
14

Na przykład, która wersja gcc obsługuje c99?Które wersje gcc i g ++ obsługują standard c i C++?

Czy istnieje tabela lub wykres pokazujący standardowy obsługiwany stan gcc i g ++?

W jaki sposób gcc i g ++ ewoluowały?

Dziękuję ~

+0

Jest niedawne pytanie związane z C++ części pytania [tutaj] (http://stackoverflow.com/questions/10026150/what-c- norme-im-obecnie-używam /) – juanchopanza

Odpowiedz

16

Bardzo ściśle rzecz biorąc, GCC obsługuje tylko C89, C++ 98 i C++ 03, a wszystko to na pewno od czasu 4.3.

Obsługa C99 jest jeszcze niekompletna, ale bardzo duży i użyteczny podzbiór był wspierany przez GCC przez długi czas.

Pomoc dla początkujących w C++ 11 rozpoczęła się od wersji 4.3 i od tego czasu stale się poprawia; jest już bardzo użyteczny w wersji 4.6.x, a dużo więcej zostało dodane w 4.7 (choć 4.7.0 jest nieco niestabilne).

Istnieje również wsparcie dla C11, ale wiele zmian dla C11 wymaga odpowiednio nowej biblioteki C, która nie jest tak łatwo wymienna.

9

uzyskać najszersze poparcie standardów z najnowszej wersji - 4.7 w tej chwili. Wybrany standard można ustawić za pomocą przełącznika -std. Here is an article that describes the available values. Niektóre dodatkowe funkcje/różne zachowania można również włączyć za pomocą -fpermissive.

+0

Widzę wiele standardowych gcc i g ++ obsługiwanych na stronie, którą podasz. A gdzie są informacje o tym, która wersja gcc i g ++ obsługuje które standardy? Dziękuję ~ – sam

+0

Nie sądzę, że są dostępne takie informacje, a gdyby tak było, otrzymywałbyś w większości te same możliwe wartości dla '-std'. Uważa się, że najnowszym dodatkiem było "C++ 0x" w 4.3. Standardy i ich implementacja w GCC to dwie różne rzeczy. Jak nazywasz "wsparcie"? Nawet z najnowszą wersją GCC wciąż dodawał poprawki do C++ 03 i ten standard ma prawie 10 lat (by być pedantycznym, większość z nich była taka sama jak C++ 98, więc jest jeszcze starsza). –

+0

Dziękuję ~ Rozumiem różnicę. A co jest w przypadku użycia -freatywnego? – sam

0

Szczegóły wsparcia można znaleźć na stronie internetowej gnu. Pamiętam, że istnieje około kilkudziesięciu standardów, których gcc nie ma zastosowania w przypadku c99. W każdym razie, aby mieć wsparcie c99 w gcc, wystarczy prosty --std = parametr c99