Uwaga: To nie jest pytanie „podaj swoją opinię” na temat C ++ 03 i C ++ 11.
Nasz silnik gry, napisany w C ++ 03, został zaprojektowany do kompilacji w systemach Windows, OSX i iOS. Wsparcie dla systemu Linux jest planowane w (bardzo) bliskiej przyszłości. Nasze doświadczenie jest ograniczone, jeśli chodzi o konsole, dlatego zadaję to pytanie.
Obecnie zastanawiamy się, czy przejście na C ++ 11 i użycie niekompatybilnych funkcji standardu C ++ 11 może stanowić problem w najbliższej przyszłości, gdy będziemy musieli przenieść nasz silnik na dowolną konsolę obecnej generacji (być może kompilatory obsługiwane przez niektóre konsole nie obsługują jeszcze C ++ 11? Nie wiemy ...).
Tak więc, twórcy gier, którzy mają doświadczenie na wielu platformach i konsolach, czy uważasz, że powinniśmy trzymać się C ++ 03, dopóki nie pojawi się nowa generacja konsol i większość osób przełączyła się na standard C ++ 11 (czy już?). A może większość konsol korzysta z kompilatorów / support (VC ++, GCC lub wariantów?), Które już obsługują funkcje C ++ 11?
źródło
Odpowiedzi:
Jeśli polegasz na swoim kodzie, aby płacić za jedzenie i schronienie, i potrzebujesz obsługiwać wiele platform na nieznanych przyszłych platformach (lub może być konieczne, aby w przyszłości obsługiwać różne platformy), zaprojektuj swój kod, aby polegał na grupa poprawnego przestrzegania przez nieznanych autorów kompilatorów najnowszych standardów językowych jest niebezpieczna (i powiedziałbym, nieodpowiedzialny). Jest to niebezpieczne dla ciebie, a zatem również niebezpieczne dla twoich podopiecznych.
Jeśli jesteś gotów podjąć takie ryzyko ze względu na
auto
, to na wszelki wypadek idź na całość. Ale nie zamierzam ci tego robić.Ponieważ z mojego doświadczenia wynika , że przejście na wiele platform, szczególnie na konsole , najlepiej osiągnąć poprzez dążenie do najniższego wspólnego mianownika, co do którego masz pewność, że będzie działać praktycznie wszędzie, nie polegając na wszystkich najnowszych funkcjach języka Whiz-Bang. Jeśli któregoś dnia będziesz musiał przenieść się na platformę, która ich nie obsługuje, musisz przepisać swój system od nowa. Czy stać Cię na płacenie pensji / czynszu, dopóki tak się stanie?
źródło
Jeśli chcesz wykonać nieco więcej pracy, możesz przyjrzeć się rozwiązaniom refrakcyjnym. W clang dzieje się obecnie kilka interesujących rzeczy. Powinno być możliwe użycie słowa kluczowego auto, uruchomienie go przez refaktor, który znajdzie wszystkie zastosowania tego słowa, rozwiąże je dla ciebie i wyśle kod, a następnie skompiluje z dowolnym, co chcesz.
Ale to oznacza mniej czasu na pracę nad grą.
Istnieje również potencjał niektórych dodatkowych funkcji, na przykład odbicia. Możesz utworzyć klasę i automatycznie wygenerować listę wszystkich właściwości do sprawdzenia w czasie wykonywania. Może być bardzo przydatny do tworzenia skryptów, tworzenia edytorów gier i tak dalej. EDYCJA: Sprawdź clreflect .
http://cppnow.org/session/refactoring-c-with-clang/
http://www.youtube.com/watch?v=mVbDzTM21BQ
http://clang.llvm.org/docs/Tooling.html
http://clang.llvm.org/docs/RAVFrontendAction.html
źródło
2to3
ale na odwrót i jest o wiele bardziej niesamowite, ale prawdopodobnie trudniejsze w użyciu. Człowieku, o ile lepiej może byćauto
?