VS 2010 ma coś z podwójnej osobowości. W szczególności ma dwa całkowicie oddzielne interfejsy kompilatora.
Podczas kompilacji kodu jest to robione przy pomocy własnego kompilatora Microsoftu, który powraca do MS C 3.0 dla MS-DOS, wydany ~ 3 dekady temu (w przypadku, gdy zastanawiacie się, dlaczego to było 3,0, MS sprzedał przedtem zmienioną wersję Kraty C).
Aż do VS 2008, parsowanie w IDE było dość prymitywne w porównaniu do kompilatora, więc nie parsowało całkiem sporo wyrafinowanego C++ całkiem poprawnie. Postanowili, że jest to niedopuszczalne, i zamiast próbować zaktualizować istniejący parser IDE, aby dopasować go do kompilatora, licencjonowali front-end kompilatora EDG.
Daje to mniej lub bardziej odwrotną sytuację: parser IDE dla Intellisense jest teraz znacznie bliższy zgodności z wersją kompilatora i rozpoznaje spora liczbę konstrukcji C++ 0x, których kompilator nie stosuje.
Jest jednak coś więcej niż tylko to: kompilator EDG obsługuje przełącznik, dzięki któremu działa bardziej jak VC++, w tym emuluje sporą liczbę błędów VC++. Chociaż nie mam danych, aby to potwierdzić, moim założeniem byłoby, że Microsoft używa tej możliwości. Ponieważ jest to oparte na EDG pobierającym kompilator VC++ i emulującym jego błędy, prawdopodobnie zgadujemy, że (przynajmniej zwykle) emulacja VG ++ EDG będzie działać na temat wersji za samym VC++. Daje to nieco paradoksalną sytuację, w której EDG (w normalnym użyciu) jest zwykle nieco przed VC++, ale wersja MS używana w IDE prawdopodobnie robi to co najmniej nieznacznie w większości przypadków.
Dzięki! +1 za odpowiedź na pytanie z historyczną perspektywą. – ForeverLearning
Nie jestem pewien, czy analizator składni intellisense jest bliższy standardowi niż dostarczony kompilator. Często obserwuję coś wręcz przeciwnego, gdy intellisense pokazuje "brak operandów dopasowujących operatora", podczas gdy ADL kompilatora znajduje to bez problemu. Wygląda na to, że zgodność nie była przyczyną innego analizatora składni dla intellisense, a raczej szybkości analizowania. –
@Gene - kompilator jest znany z tego, że nie wykonuje poprawnie ADL i szablonów.Przedni koniec EDG jest znacznie bardziej niezawodny. –