Rozważam użycie niektórych funkcji C ++ 11 (jak auto
na przykład) w niektórych projektach wieloplatformowych (Windows + Mac). W systemie Windows Visual Studio obsługuje części nadchodzącego standardu C ++ 11, który pozwoliłby mi uprościć części kodu, więc naturalnie byłbym zainteresowany rozpoczęciem korzystania z tych funkcji.
Ale o ile mi wiadomo, obecna wersja XCode (3.2.4 + GCC 4.2) w ogóle nie obsługuje żadnych funkcji C ++ 11. Czy mogę jakoś zaktualizować wersję GCC lub wersję CLang? A może powinienem po prostu ugryźć się w język i poczekać, aż Apple przygotuje nową wersję kiedyś w przyszłości?
Odpowiedzi:
Xcode 4.2 w końcu dodał obsługę C ++ 0X:
Na ekranie ustawień kompilacji projektu włącz opcje „Wszystkie”.
W sekcji „Opcje kompilacji” ustaw kompilator na „Kompilator Apple LLVM 3.0”.
Przewiń w dół do sekcji „Apple LLVM Compiler 3.0 - język” i ustaw „Dialekt języka C ++” na „C ++ 0X” i „C ++ Standard Library” na „libc ++”.
Wiadomo, że std :: move (), konstruktor przenoszenia i odwołanie do wartości R działają zgodnie z oczekiwaniami, a ja testuję na std :: thread i std :: atomic.
źródło
GNU++0X
opcją dlaC++ Language Dialect
ilibstdc++
opcją dlaC++ Standard Library
? Kiedy będą używane?/Developer/About\ Xcode.pdf
i tak, jest napisane, że C ++ 11 jest obsługiwany, ale kiedy-std=gnu++0x
go używam , wypluwacc1plus: error: unrecognized command line option "-std=0x++"
! Powinienem użyćclang++
zamiast tego?clang++
podczas kompilacji, a nieg++
, dlatego obsługa C ++ 11 kończy się niepowodzeniem podczas próby użyciag++
z wiersza poleceń (ponieważ starożytnyg++
XCode go nie obsługuje). Po prostu FYI.======= Aktualizacja 2012: =======
Zacznij od Clang - wiele funkcji C ++ 11 jest teraz dostępnych w Clang. Jest dołączony do Xcode.
======= Oryginalna odpowiedź ze stycznia 2011 r .: =======
Kompilator firmy Intel może być obecnie najczystszym rozwiązaniem. http://software.intel.com/en-us/articles/intel-composer-xe/
Clang obiecujący, ale niezbyt stabilny lub wyposażony w funkcje wrt c ++ 0x. c ++ jest nadal bardzo nowy dla clang.
gcc: stosunkowo dojrzały, ale będziesz musiał pisać i utrzymywać swoje wtyczki kompilatora dla xcode.
możesz również określić niestandardowe skrypty, ale jest to trudne w utrzymaniu ... chyba że zrobisz wszystko i utworzysz narzędzie adaptera.
źródło
Xcode używa kompilatorów GCC lub Clang C ++. Wszelkie funkcje obsługiwane przez te kompilatory są uczciwe. Strona zgodności GCC z C ++ jest tutaj, a strona zgodności z Clang C ++ jest tutaj .
źródło
Znalazłem auto, decltype (), range based "for (:)" w projekcie wieloplatformowym (LLVM dla MacOSX, iOS, gcc / linux, MSVC 10 / windows).
lambdy i makra wariadyczne nie działają jeszcze niestety pod LLVM.
źródło