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:
Domyślne argumenty szablonu dla szablonów funkcji.
Jawne operatory konwersji.
Funkcje usunięte.
Inicjatory niestatycznych elementów członkowskich danych (NSDMIs).
Funkcje domyślne.*
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