Co nowego w Visual C++ dla Visual Studio 2013

Ten dokument wprowadza nowe i ulepszone funkcje w Visual C++ w programie Visual Studio 2013.

Aby uzyskać informacje na temat innych dodatków w Visual Studio 2013, zobacz Co nowego w Visual Studio 2013.

Ulepszona obsługa standardów ISO C/C++

Kompilator

  • Obsługuje te funkcje językowe ISO C++11:

  • Obsługuje te funkcje językowe ISO C99:

    • _Bool

    • Złożone literały.

    • Inicjatory wyznaczone.

    • Mieszanie deklaracji z kodem.

  • Konwersja literału ciągu do modyfikowalnych wartości może być niedozwolona przy użyciu nowej opcji kompilatora /Zc:strictStrings.W języku C++ 98 konwersja z literałów ciągów do typu char * (i szerokich literałów ciągów do typu wchar_t *) została zaniechana.W języku C++ 11 konwersja została usunięta całkowicie.Mimo że kompilator może ściśle przestrzegać standardu, zamiast tego zapewnia opcję /Zc:strictStrings, dzięki czemu można kontrolować konwersję.Domyślnie opcja ta jest wyłączona.Należy zauważyć, że podczas korzystania z tej opcji w trybie debugowania biblioteka STL nie zostanie skompilowana.

  • Rzuty referencji rvalue/lvalue. Dzięki odwołaniom rvalue C++11 może wyraźnie odróżniać lvalues i rvalues.Wcześniej kompilator języka Visual C++ nie zapewniał tego mechanizmu w określonych scenariuszach rzutowania.Nową opcję kompilatora, /Zc:rvalueCast, została dodana do zgodności kompilatora z Dokumentem roboczym języka C++(patrz ppkt 5.4, [expr.cast]/1).

    Domyślne zachowanie, gdy ta opcja nie jest określona, jest takie samo jak w Visual Studio 2012.

[!UWAGA]

* Dla funkcji domyślnych, używających =default, aby zażądać konstruktorów przeniesienia memberwise i przenieść przypisania, operatory nie są obsługiwane.

Biblioteki C99

Deklaracje i implementacje są dodawane do brakujących funkcji w tych nagłówkach: math.h, ctype.h, wctype.h, stdio.h, stdlib.h i wchar.h.Dodawane są również nowe nagłówki complex.h, stdbool.h, fenv.h i inttypes.h, a implementacje dla wszystkich funkcji są w nich zadeklarowane.Istnieją nowe nagłówki otoki C++ (ccomplex, cfenv, cinttypes, ctgmath) a wiele innych jest aktualizowanych (ccomplex, cctype, clocale, cmath, cstdint, cstdio, cstring, cwchar, i cwctype).Aby uzyskać więcej informacji, zobacz Obsługa biblioteki C99 w programie Visual Studio.

Biblioteka standardowych szablonów

  • Obsługa operatorów konwersji jawnej C++11, list inicjatorów, typów wyliczeniowych i wzorców ze zmienną liczbą parametrów.

  • Wszystkie kontenery obsługuje teraz C ++ 11 element szczegółowych wymagań.

  • Obsługa tych funkcji C++14:

    • "Przezroczyste funktory operatora" less<>, greater<>, plus<>, multiplies<>, i tak dalej.

    • make_unique<T>(args...) i make_unique<T[]>(n)

    • cbegin()/cend(), rbegin()/rend(), i crbegin()/crend() funkcje nieczłonkowskie.

  • <atomic> otrzymał wiele udoskonaleń zwiększających wydajność.

  • <type_traits> otrzymał główną stabilizację i poprawki kodu.

Fundamentalne zmiany

Ta poprawiona obsługa dla standardów ISO C/C++ może wymagać zmian w istniejącym kodzie, tak aby wystąpiła zgodność z C++11 i poprawna kompilacja w Visual C++ w programie Visual Studio 2013.Aby uzyskać więcej informacji, zobacz Fundamentalne zmiany w Visual C++.

Aby uzyskać więcej informacji na temat nowego języka C++11/14 i funkcji biblioteki STL, zobacz Obsługa dla funkcji C++11 (Modern C++) i Funkcje, poprawki i przełomowe zmiany w bibliotece STL języka C++11/14 w programie Visual Studio 2013

Zwiększenia biblioteki Visual C++

  • SDK RESZTA C++ jest dodawany.Posiada nowoczesną implementację C++ usług REST.Aby uzyskać więcej informacji, zobacz C++ REST SDK.

  • Obsługa tekstury języka C++ AMP wzrasta.Zawiera teraz obsługę mipmap i nowe tryby pobierania próbek.

  • Zadania PPL obsługuje wiele technologii planowania i debugowania asynchronicznego.Nowe interfejsy API umożliwiają tworzenie zadań PPL dla wyników normalnych i wyjątkowych warunków.

Wydajność aplikacji C++

  • Auto-Vectorizer teraz rozpoznaje i optymalizuje więcej wzorców C++, aby kod uruchamiał szybciej.

  • Platforma ARM i mikro-architektura micro Atom poprawki jakości kodu.

  • __vectorcall konwencji wywoływania zostanie dodany.Przekaż argumenty typu wektorowego przy użyciu __vectorcall konwencji wywoływania, aby skorzystać z rejestrów wektorowych.

  • Nowe opcje konsolidatora. Przełączniki /Gw (kompilatora) i /Gy (asemblera) umożliwiają optymalizacje konsolidatora w celu tworzenia bardziej efektywnych danych binarnych.

  • C++ AMP obsługa pamięci wspólnej do zmniejszenia lub wyeliminowania kopiowania danych między GPU i CPU.

  • Profilowana optymalizacja (PGO) ulepszenia:

    • Poprawa wydajności wynikająca ze zmniejszenia w zestawie roboczym aplikacji, które są zoptymalizowane przy użyciu PGO.

    • Nowe PGO do rozwoju aplikacji Windows Store.

Windows Store obsługa rozwoju aplikacji

  • Obsługa typów spakowanych w strukturach wartości. Teraz można zdefiniować typy wartości za pomocą pól, które może być równa null — na przykład, IBox<int>^ w przeciwieństwie do int.Oznacza to, że pola mogą mieć wartość lub być równe nullptr.

  • Bogatsze informacje o wyjątku. C + +/ CX obsługuje nowy model błędu systemu Windows, który umożliwia przechwytywania i propagację informacje o wyjątku sformatowanym między interfejsem binarnym aplikacji (ABI); obejmuje to stosy wywołań i ciągi komunikatów niestandardowych.

  • Object::toString() teraz jest wirtualny. Możesz teraz zastąpić ToString w zdefiniowanych przez użytkownika typach ref środowiska wykonawczego Windows.

  • Obsługa przestarzałych API. Interfejsy API publicznego środowiska uruchomieniowego Windows mogą teraz zostać oznaczone jako przestarzałe i podane jako wiadomość niestandardowa, która pojawia się jako ostrzeżenie kompilacji i może stanowić wskazówkę migracji.

  • Ulepszenia Debugera. Obsługa debugowania macierzystego/międzyoperacyjnego JavaScript, diagnoza wyjątków środowiska wykonawczego Windows Runtime i asynchroniczne debugowanie kodu (zarówno środowisko wykonawcze Windows Runtime, jak i PPL).

[!UWAGA]

Oprócz specyficznych dla języka C++ funkcji i ulepszeń, które są opisane w tej sekcji, inne ulepszenia w programie Visual Studio również mogą ułatwić tworzenie lepszych aplikacji Windows Store.Aby uzyskać szczegółowe informacje o tych funkcjach, zobacz Przewodnik po funkcjach systemu Windows 8.1.Aby uzyskać więcej informacji dotyczących szablonów nowych aplikacji, zobacz Szablony projektów C#, VB oraz C++ dla aplikacji Windows Store.Lista nowych możliwości platformy – zobacz Podgląd Windows 8.1: nowe interfejsy API i funkcje.

Rozszerzenia diagnostyki

  • Ulepszenia Debugera. Obsługa debugowania asynchronicznego i debugowania Tylko mój kod.

  • Kategorie analizy kodu. Możesz teraz wyświetlić skategoryzowane dane wejściowe z analizy kodu, aby pomóc Ci odnaleźć i naprawić usterki kodu.

  • Diagnostyka XAML. Możesz teraz zdiagnozować wrażliwość interfejsu użytkownika i problem zużycia baterii w Twoim XAML.

  • Ulepszenia grafiki i debugowania GPU.

    • Zdalne nagrywanie i odtwarzanie na urządzeniach rzeczywistych.

    • Jednoczesne C++ AMP i debugowania CPU.

    • Ulepszona diagnostyka środowiska uruchomieniowego kodu C++ AMP.

    • Debugowanie śledzenia cieniowania obliczenia HLSL.

Udoskonalenia grafiki trójwymiarowej

  • Potok zawartości obrazu — obsługa formantu wstępnie przemnożonego kanału alfa DDS.

  • Edytor obrazów używa wewnętrznie wstępnie przemnożony kanał alfa do renderowania i tym samym pozwala uniknąć renderowania artefaktów, takich jak ciemne otoczki.

  • Obraz i edytory modelu. Tworzenie filtra definiowanego przez użytkownika jest teraz obsługiwane w Projektancie cieniowania w edytorze obrazu i edytorze modelu..

IDE i produktywność

Visual Studio IDE jest znacznie ulepszony, aby wspomóc produktywność kodowania w C++.

  • Udoskonalone formatowanie kodu. Możesz zastosować więcej ustawień formatowania dla swojego kodu C++.Za pomocą tych ustawień, można kontrolować rozmieszczenie w nowych wierszach nawiasów klamrowych i słów kluczowych, wcięć, odstępów i zawijania. Kod jest automatycznie sformatowany po wykonaniu instrukcji i bloków, i po wklejeniu kodu do pliku.Aby modyfikować ustawienia formatowania na pasku menu w Visual Studio, wybierz Narzędzia, Opcje, rozwiń Edytor tekstu, C/C++, i węzły Formatowania, a następnie dokonaj zmian.Można również użyć okna Szybkie uruchomienie, aby uzyskać dostęp do tych opcji.

  • Zakończenie nawiasu klamrowego. Kod języka C++ teraz automatycznie uzupełnia znaki zamknięcia, które odnoszą się do tych znaków otwarcia:

    • { (nawias klamrowy)

    • [ (nawias kwadratowy)

    • ( (w nawiasach)

    • ' (pojedynczy cudzysłów)

    • " (podwójny cudzysłów)

  • Funkcje dodatkowe C++ Autouzupełnianie.

    • Dodaje średnik dla typu klasy.

    • Kończy nawiasami okrągłymi dla surowych literałów ciągów.

    • Kończy komentarze wielowierszowe (/* */)

  • Znajdź wszystkie odwołania teraz automatycznie rozpoznaje i filtruje odniesienia w tle po wyświetleniu listy trafień tekstowych. Aby wyłączyć rozwiązywanie odwołania, na pasku menu w Visual Studio, wybierz Narzędzia, Opcje, rozwiń Edytor tekstu, C/C++, i Zaawansowane węzły oraz zmień ustawienie Wyłącz rozwiązywanie pod Odwołania.

Aby modyfikować ustawienia uzupełniania nawiasów na pasku menu w Visual Studio, wybierz Narzędzia, Opcje, rozwiń Edytor tekstu, C/C++, i węzły Ogólne, a następnie dokonaj zmian.Możesz również zmienić ustawienia dla wszystkich języków Visual Studio poprzez rozszerzenie Edytor tekstów, Wszystkie języki i węzły Ogólne.

Aby modyfikować konkretne ustawienia C++ na pasku menu, wybierz Narzędzia, Opcje, rozwiń Edytor tekstu, C/C++, i węzły Zaawansowane, a następnie dokonaj zmian.

  • Członek oparty na kontekście filtrowanie listy. Członkowie niedostępni są odfiltrowani z listy elementów członkowskich IntelliSense. Na przykład prywatni członkowie nie są wyświetlani na liście członków, chyba że zmodyfikujesz kod, który implementuje ten typ.Kiedy lista elementów członkowskich jest otwarta, możesz wcisnąć Ctrl+J, aby usunąć jeden poziom filtrowania (dotyczy tylko bieżącego elementu członkowskiego okna listy).Możesz ponownie wcisnąć CTRL+J, aby usunąć filtrowanie tekstowe i pokazać każdy element członkowski.

  • Parametr pomocy przewijania. Sygnatura funkcji wyświetlana w etykietce narzędzia parametru pomocy teraz zmienia się na podstawie liczby parametrów, jakie rzeczywiście zostały wpisane, a nie po prostu pokazując dowolną sygnaturę i nie aktualizując jej na podstawie bieżącego kontekstu.Parametr pomocy również funkcjonuje poprawnie, kiedy jest wyświetlany na funkcjach zagnieżdżonych.

  • Przełącz nagłówek/plik kodu. Możesz przełączać między nagłówkiem i odpowiadającym mu plikiem kodu przy użyciu polecenia na menu skrótu lub skrótu klawiszowego.

  • Okno właściwości projektu C++ o zmiennym rozmiarze.

  • Autogenerowanie kod obsługi zdarzeń w C + +/ CX i C + +/ CLI. Kiedy wpisujesz kod w celu dodania obsługi zdarzeń w pliku kodu C++/CX lub C++/CLI, edytor może automatycznie wygenerować wystąpienie delegatu i definicję obsługi zdarzenia.Pojawi się okno etykiety narzędzi, gdy kod obsługi zdarzenia będzie mógł być generowany automatycznie.

  • Wzmocnienie świadomości DPI. Ustawienie DPI Awareness dla plików manifestu aplikacji obsługuje teraz ustawienie "Per Monitor High DPI Aware".

  • Szybsze przełączanie konfiguracji. W przypadku dużych aplikacji, przełączanie konfiguracji – zwłaszcza przełączenia kolejnych operacji – działa znacznie szybciej.

  • Efektywność czasu kompilacji.

    • Szybsza kompilacja. Liczne optymalizacje i wykorzystanie procesorów wielordzeniowych przyspiesza kompilację, szczególnie w przypadku dużych projektów.Kompilacje przyrostowe aplikacji C++, zawierające odwołania do C++ WinMD są również znacznie szybsze.
  • Aby uzyskać informacje dotyczące innych dodatków i ulepszeń w IDE, zobacz Co nowego w Visual Studio 2013 i inne artykuły wymienione w tym artykule.

Zobacz też

Koncepcje

Co nowego w Visual Studio 2013

Inne zasoby

Blog zespołu Visual C++