Ciągle czytam o C99 i C ++ 11 i wszystkich tych całkowicie słodkich rzeczach, które są dodawane do standardu językowego, który może być kiedyś przyjemny w użyciu. Jednak obecnie gnijemy w krainie pisania C ++ w Visual Studio.
Czy którykolwiek z nowych elementów standardu zostanie kiedykolwiek dodany do Visual Studio, czy też Microsoft jest bardziej zainteresowany dodaniem nowych wariantów C # w tym celu?
Edycja: Oprócz zaakceptowanej odpowiedzi znalazłem blog zespołu Visual C ++:
A konkretnie ten post w nim:
Bardzo przydatne. Dzięki!
c++
visual-studio
visual-c++
c++11
c99
Colen
źródło
źródło
Odpowiedzi:
MS ma na to szereg publicznych odpowiedzi, z których większość obwinia swoich użytkowników. Jak ten:
https://devblogs.microsoft.com/cppblog/iso-c-standard-update/
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=345360
Jest to dość smutny stan rzeczy, ale ma również sens, jeśli podejrzewasz, że MS chce zablokować użytkowników: bardzo utrudnia przeniesienie nowoczesnego kodu opartego na gcc do MSVC, co przynajmniej uważam za niezwykle bolesne.
Istnieje jednak obejście: Zauważ, że firma Intel jest o wiele bardziej świadoma w tej kwestii. kompilator Intel C może obsługiwać kod C99, a nawet ma te same flagi co gcc, co znacznie ułatwia przenoszenie kodu między platformami. Kompilator Intela działa również w Visual Studio. Porzucając MS COMPILER, nadal możesz używać MS IDE, które wydaje ci się mieć jakąś wartość, i używać C99 do zadowolenia.
Bardziej rozsądnym podejściem jest uczciwe przejście na Intel CC lub gcc i użycie Eclipse w swoim środowisku programistycznym. Z mojego doświadczenia wynika, że przenośność kodu w systemach Windows-Linux-Solaris-AIX-etc jest zwykle ważna, a niestety nie jest to wcale obsługiwane przez narzędzia MS.
źródło
Herb Sutter jest przewodniczącym i bardzo aktywnym członkiem komitetu normalizacyjnego C ++, a także architektem oprogramowania w Visual Studio for Microsoft.
Jest jednym z autorów nowego modelu pamięci C ++ znormalizowanego dla C ++ 0x. Na przykład następujące dokumenty:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2669.htm
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007 /n2197.pdf
mieć na nim jego nazwisko. Wydaje mi się, że włączenie C ++ 0x w systemie Windows jest zapewnione, o ile H. Sutter pozostaje w firmie Microsoft.
Jeśli chodzi o C99 tylko częściowo zawarty w Visual Studio, myślę, że jest to kwestia priorytetów.
logicznaw C99 jest śmieszna, w najlepszym razie ... Zobacz http://david.tribble.com/ text / cdiffs.htm, aby uzyskać więcej informacji)Czy byłbym więc firmą Microsoft, dlaczego miałbym wdrażać funkcje, których niewielu ludzi kiedykolwiek używa, skoro te same funkcje są już oferowane w bardziej aktywnych dla społeczności językach, które są już używane przez większość ludzi?
Wniosek?
C ++ 0x zostanie dołączony jako rozszerzenie VS 2008 lub następnej generacji (generacji?) Visual Studio.
Funkcje C99, które nie zostały jeszcze zaimplementowane, nie będą dostępne w kolejnych latach, chyba że wydarzy się coś dramatycznego (kraj pełen programistów C99 pojawia się znikąd?)
Edytuj 2011-04-14
Najwyraźniej „kraj pełen programistów C99” już istnieje: http://blogs.msdn.com/vcblog/archive/2007/11/05/iso-c-standard-update.aspx#6415401
^ _ ^
Mimo to ostatni komentarz pod adresem : http://blogs.msdn.com/vcblog/archive/2007/11/05/iso-c-standard-update.aspx#6828778 jest, jak sądzę, wystarczająco jasny.
Edytuj 2012-05-03
Herb Sutter wyjaśnił, że:
Wpis na blogu zawiera linki i dalsze wyjaśnienia dotyczące tych decyzji.
Źródło: http://herbsutter.com/2012/05/03/reader-qa-what-about-vc-and-c99/
źródło
restrict
kluczowe. Jest mnóstwo wspaniałych funkcji C99, których brakuje w C ++ i są to funkcje, których używam na co dzień jako programista C.restrict
słowo kluczowe, nadal możesz go używać w C ++, najwyraźniej: stackoverflow.com/questions/776283/… . . .Począwszy od wersji zapoznawczej VC2013 1 , C99, obsługiwany jest bardziej zróżnicowany zestaw C ++ 11 i niektóre nowo wprowadzone standardy C ++ 14. Sprawdź oficjalny blog, aby uzyskać więcej informacji: http://blogs.msdn.com/b/vcblog/archive/2013/06/27/what-s-new-for-visual-c-developers-in-vs2013-preview. aspx
Aktualizacja:
Z https://news.ycombinator.com/item?id=9434483 (Stephan T Lavavej aka: STL jest opiekunem zespołu STL @VC):
Sprawdź ten post, aby uzyskać szczegółowe informacje: http://blogs.msdn.com/b/vcblog/archive/2015/04/29/c-11-14-17-features-in-vs-2015-rc.aspx .
źródło
Brałem udział w pracach nad ISO C ++ (2000-2005), a Microsoft wniósł znaczący wkład w ten język. Nie ma wątpliwości, że będą działać na C ++ 0x, ale będą potrzebować trochę więcej czasu niż mówią Intel. Micosoft musi radzić sobie z większą bazą kodów, która często korzysta z ich zastrzeżonych rozszerzeń. To po prostu powoduje dłuższą fazę testową. Jednak ostatecznie będą obsługiwać większość C ++ 0x (eksport nadal nie jest lubiany, przynajmniej tak rozumiem).
Jeśli chodzi o ISO C, ludzie pracujący nad normą nie są reprezentatywni dla rynku Microsoftów. Klienci Microsoftu mogą używać C ++ 98, jeśli szukają tylko lepszego C. Dlaczego więc Microsoft miałby wydawać pieniądze na C99? Jasne, wybrane przez Microsoft części, ale to rozsądny biznes. I tak potrzebowaliby ich do C ++ 0x, więc po co czekać?
źródło
Niestety, brakuje obsługi MSVC dla C. Obsługuje tylko część C99, która jest podzbiorem C ++ ... co oznacza, że na przykład fizycznie niemożliwe jest skompilowanie ffmpeg lub jego bibliotek libav * w MSVC, ponieważ używają one wielu funkcji C99, takich jak nazwane elementy struktury. Sytuację pogarsza fakt, że libavcodec wymaga również kompilatora, który utrzymuje wyrównanie stosu, czego MSVC tego nie robi.
Pracuję na x264, który w przeciwieństwie do ffmpeg jest dołożyć starań, aby wspierać MSVC, ale robi tak często był koszmar w sobie. Nie utrzymuje wyrównania stosu, nawet jeśli jawnie przekażesz najwyższe wywołanie funkcji przez jawną funkcję wyrównania stosu opartą na zestawie, więc wszystkie funkcje, które wymagają wyrównanego stosu, muszą być wyłączone. Bardzo denerwujące było również to, że nie mogę używać vararrayów; być może tak jest najlepiej, ponieważ najwyraźniej GCC masowo pesymuje je pod względem wydajności.
źródło
Nowszy post dotyczący zgodności funkcji MSVC C ++ 11 z MSVC 2010 i 2011 jest już dostępny online .
źródło
Microsoft nigdy nie wyraził żadnego prawdziwego zainteresowania dotrzymaniem kroku standardowi c99 (który się starzeje). Smutne dla programistów C, ale podejrzewam, że Microsoft bardziej dba o społeczność C ++.
źródło
Visual C ++ 2008 SP1 zawiera przynajmniej części TR1, a od czasu do czasu zespół Visual C ++ pisze na blogu lub mówi o C ++ 0x, więc myślę, że będą go kiedyś wspierać w tej funkcji. Nie przeczytałem jednak niczego oficjalnego.
źródło
Zaktualizowane informacje na ten temat:
Obecnie (10 listopada 2008 r.) Istnieje „Community Tech Preview” (CTP) VS2010, która zawiera podgląd VC10 z zaimplementowanymi pewnymi częściami C ++ 0x (zauważ, że VC10 nie będzie miał pełnego zestawu C ++ 0x zmiany wprowadzone nawet po wydaniu VC10):
http://www.microsoft.com/downloads/details.aspx?FamilyId=922B4655-93D0-4476-BDA4-94CF5F8D4814&displaylang=en
Kilka szczegółów na temat nowości w VC10 CTP:
Jak wspomniano w powyższym artykule, „Kompilator Visual C ++ w programie Microsoft Visual Studio 2010 Community Technology Preview (CTP) z września obsługuje cztery funkcje języka C ++ 0x, a mianowicie:”
źródło
Herb Sutter jest przewodniczącym organizacji zajmującej się normami ISO C ++ i pracuje również dla firmy Microsoft. Nie wiem o standardzie Visual Studio C - głównie dlatego, że nigdy nie używam zwykłego C - ale Microsoft z pewnością stara się popchnąć nowy standard C ++ do przodu. Dowodem na to jest - jak wspomniano OregonGhost - TR1, który jest zawarty w najnowszej wersji usługi Visual Studio.
źródło
Zespół Visual C ++ opublikował tabelę funkcji C ++ 0x obsługiwanych w wersji 2010 pod adresem http://blogs.msdn.com/b/vcblog/archive/2010/04/06/c-0x-core-language -features-in-vc10-the-table.aspx . Ponieważ może wystąpić opóźnienie między specyfikacją a implementacją, wydaje się to całkiem rozsądne. Wikipedia ma fajny artykuł na temat specyfikacji. Nie jest jeszcze skończona w chwili, gdy to piszę.
źródło
Visual C ++ Bloq zawiera wiele informacji na temat kilku interesujących punktów dotyczących obsługi C ++ 11 w VC ++ 11, w tym kilka tabel
Blog zespołu Visual C ++, C ++ 11 Funkcje w Visual C ++ 11
źródło