Novinky v jazyce Visual C++ v sadě Visual Studio 2013

Tento dokument uvádí nové a vylepšené funkce v Visual C++ v sadě Visual Studio 2013.

Informace o dalších dodatcích ve Visual Studio 2013 naleznete v tématu Novinky v sadě Visual Studio 2013.

Vylepšená podpora standardů ISO C/C++

Kompilátor

  • Podporuje tyto funkce jazyka ISO C++11:

  • Podporuje tyto funkce jazyka ISO C99:

    • _Bool

    • Složené literály.

    • Určené inicializátory.

    • Míchání deklarací s kódem.

  • Převod řetězcového literálu na upravitelné hodnoty může být zakázáno pomocí nové možnosti kompilátoru /Zc:strictStrings.V jazyku C++98 převod z řetězcových literálů na char * (a široký řetězec literálů na wchar_t *) byl zrušen.V jazyku C++11 byl převod úplně odebrán.Ačkoli kompilátor může důsledně splňovat normy, místo toho poskytuje volbu /Zc:strictStrings, abyste mohli převod řídit.Ve výchozím nastavení je možnost vypnuta.Všimněte si, že při použití této možnosti v režimu ladění, STL nebude kompilovat.

  • Odkazy přetypování rvalue/lvalue. S odkazy rvalue může C++11 jasně rozlišovat mezi lvalues a rvalues.Dříve toto kompilátor Visual C++ neposkytl v konkrétním scénáři obsazení.Nová možnost kompilátoru, /Zc:rvalueCast, byla přidána, aby kompilátor splňoval podmínky pracovní dokumentace jazyka C++(viz oddíl 5.4, [expr.cast]/1).

    Výchozí chování, pokud není tento parametr zadán, je stejné, jako v aplikaci Visual Studio 2012.

[!POZNÁMKA]

* Pro výchozí funkce není použití =default k požadování konstruktorů s přesouváním a operátory přiřazení přesunutí podporováno.

Knihovny systému C99

Deklarace a implementaci jsou přidány pro chybějící funkce v těchto záhlavích: math.h, ctype.h, wctype.h, stdio.h, stdlib.h a wchar.h.Přidána jsou také nová záhlaví complex.h, stdbool.h, fenv.h a inttypes.h a implementace pro všechny funkce v nich deklarované.Existují nové hlavičky obálky C++ (ccomplex, cfenv, cinttypes, ctgmath) a spousta dalších je aktualizována(ccomplex, cctype, clocale, cmath, cstdint, cstdio, cstring, cwchar a cwctype).Další informace naleznete v tématu Podpora knihovny C99 v aplikaci Visual Studio 2013.

Standardní šablona knihovny

  • Podpora pro explicitní převody C++ 11, inicializační seznamy, oboru výčtů a variadické šablony.

  • Všechny kontejnery nyní podporují detailní požadavky prvků jazyka C ++ 11.

  • Podpora pro tyto funkce C++14:

    • "Transparentní funktory operátorů" less<>, greater<>, plus<>, multiplies<>, a tak dále.

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

    • Nečlenské funkce cbegin()/cend(), rbegin()/rend() a crbegin()/crend().

  • <atomic> obdržel četná vylepšení výkonu.

  • <type_traits> obdržel hlavní opravy stabilizace a kódu.

Nejnovější změny

Vylepšená podpora standardů ISO C/C++ může vyžadovat změny existujícího kódu tak, aby odpovídal C++11 a byl správně kompilován v Visual C++ v sadě Visual Studio 2013.Další informace naleznete v tématu Nejnovější změny ve Visual C++.

Další informace o novém jazyku C++11/14 a funkcích STL naleznete v tématech Podpora funkcí C++11 (moderní jazyk C++) a Funkce C++11/14 STL, opravy a nejnovější změny v aplikaci Visual Studio 2013

Vylepšení knihovny jazyka Visual C++

  • Sada C++ REST SDK je přidána.Má moderní implementaci C++ služeb REST.Další informace naleznete v tématu C++ REST SDK.

  • Podpora textur C++ AMP je rozšířena.Nyní zahrnuje podporu pro mipmapy a nové způsoby vzorkování.

  • Úkoly PPL podporují více technologií plánování a asynchronní ladění.Nové rozhraní API umožňují vytvářet úlohy PPL s normálními výsledky i podmínkami výjimky.

Výkon aplikací v jazyce C++

  • Automatická vektorizace nyní rozpoznává a optimalizuje další vzory jazyka C++, aby váš kód běžel rychleji.

  • Zvýšení kvality kódu pro platformu ARM a mikroarchitekturu Atom.

  • __vectorcall konvence volání je přidána.Předat argumenty typu vektoru pomocí konvence volání __vectorcall a použít vektorové registry.

  • Nové možnosti linkeru. Přepínače /Gw (kompilátor) a /Gy (nástroj pro sestavení) umožňují optimalizace linkeru a tím i tvorbu štíhlejších binárních souborů.

  • Podpora sdílené paměti C++ AMP ke snížení nebo eliminaci kopírování dat mezi CPU a GPU.

  • Rozšíření Profilově řízené optimalizace (PGO):

    • Zlepšení výkonu snížením pracovní sady aplikací optimalizovaných pomocí PGO.

    • Nové PGO pro vývoj aplikací Windows Store.

Windows Store podpora vývoje aplikací

  • Podpora pro zabalené typy ve struktuře hodnot. Typy hodnot lze nyní definovat pomocí polí, která mohou být null, například IBox<int>^ narozdíl od int.To znamená, že pole mohou buď mít hodnotu nebo se rovnat nullptr.

  • Rozsáhlejší informace o výjimce. C++/ CX podporuje nový model chyb Windows, který umožňuje zachycení a propagaci bohatých informací o výjimkách napříč binárním rozhraním aplikace (ABI); zahrnuje volání zásobníku a o vlastní řetězce zpráv.

  • Object::ToString() je nyní virtuální. Nyní můžete přepsat ToString v uživatelem definovaných typech Windows Runtime.

  • Podpora pro zastaralé rozhraní API. Veřejné rozhraní API pro Windows Runtime lze nyní označit jako zastaralé a doplnit je o vlastní zprávu, která se zobrazí jako varování při sestavení a může sloužit jako vodítko pro migraci.

  • Vylepšení ladicího programu. Podpora ladění při spoluprácí nativního prostředí/JavaScript, diagnostiky výjimky Windows Runtime a asynchronní ladění kódu (Windows Runtime a PPL).

[!POZNÁMKA]

Kromě funkcí specifických pro C++ a vylepšení, která jsou popsána v této části, další vylepšení v aplikaci Visual Studio vám mohou také pomoci psát lepší aplikace Windows Store.Další informace o těchto funkcích naleznete v tématu Průvodce funkcí Windows 8.1.Další informace o nových šablonách aplikací naleznete v tématu Šablony projektů v jazyce C#, VB a C++ pro aplikace pro Windows Store.Seznam nových funkcí platformy naleznete v části Windows 8.1 Preview: Nová rozhraní API a funkce pro vývojáře.

Zdokonalení diagnostiky

  • Vylepšení ladicího programu. Podpora asynchronního ladění a ladění Pouze můj kód.

  • Kategorie analýzy kódu. Nyní můžete zobrazit kategorizovaný výstup z nástroje Code Analyzer, který vám pomůže najít a opravit závadný kód.

  • Diagnostika XAML. Nyní lze diagnostikovat odezvu uživatelského rozhraní a problémy spotřeba energie baterie ve vaší XAML.

  • Grafika a vylepšení ladění GPU.

    • Vzdálený záznam a přehrávání na skutečných zařízeních.

    • Ladění současně C++ AMP a procesoru.

    • Zlepšená diagnostika modulu runtime C++ AMP.

    • Ladění trasování výpočetního shaderu HLSL.

Vylepšení 3D grafiky

  • Podpora Kanál obsahu obrázku pro formát přednásobené alfa DDS.

  • Editor obrázků pro vykreslování používá interně přednásobené alfa a tím brání vykreslování artefaktů, jako je tmavé olemování.

  • Editory modelu a obrazu. Tvorba uživatelem definovaných filtrů je nyní podporována v Návrháři Shaderu v editoru obrázku a editoru modelu.

IDE a produktivita

Rozhraní IDE sady Visual Studio obsahuje významná vylepšení, které vám pomohou zvýšit produktivitu při kódování v C++.

  • Vylepšené formátování kódu. Můžete použít další nastavení formátování kódu jazyka C++.Pomocí těchto nastavení můžete určit umístění složených závorek a klíčových slov na novém řádku, odsazení, řádkování a zalomení řádku. Po dokončení příkazů a bloků a po vložení kódu do souboru je kód automaticky formátován.Chcete-li změnit nastavení formátování na panelu nabídek v aplikaci Visual Studio, zvolte Nástroje, Možnosti, rozbalte uzly Textový Editor, C/C++ a Formát a pak proveďte požadované změny.Můžete také použít pole Snadné spuštění pro přístup k těmto možnostem.

  • Uzavírání hranatých závorek. Kód jazyka C++ nyní automaticky dokončuje koncové znaky, které odpovídají těmto počátečním znakům:

    • { (složená závorka)

    • [ (hranatá závorka)

    • ( (závorky)

    • ' (jednoduché uvozovky)

    • " (dvojité uvozovky)

  • Další funkce automatického dokončování jazyka C++.

    • Přidá středník pro typy tříd.

    • Dokončí závorky u nezpracovaných řetězcových literálů.

    • Dokončuje víceřádkové komentáře (/* */)

  • Najít všechny odkazy nyní automaticky vyhodnocuje a filtruje odkazy na pozadí poté, co zobrazí seznam odpovídajících textových položek. Chcete-li zakázat rozlišení na odkaz, vyberte na panelu nabídek v aplikaci Visual Studio možnost Nástroje, Volby, rozbalte možnost Textový Editor, C/C++ a uzly Upřesnit a změňte nastavení Zakázat řešení pod nabídkou Odkazy.

Chcete-li změnit nastavení dokončování závorek na panelu nabídek v aplikaci Visual Studio, zvolte Nástroje, Možnosti, rozbalte uzly Textový Editor, C/C++ a Obecné a pak proveďte požadované změny.Můžete také změnit nastavení pro všechny jazyky aplikace Visual Studio rozbalením uzlů Textový Editor, Všechny jazyky a Obecné.

Chcete-li změnit konkrétní nastavení C++, na panelu nabídek zvolte Nástroje, Možnosti, rozbalte uzly Textový Editor, C/C++ a Formát a pak proveďte požadované změny.

  • Filtrování seznamu členů založení na kontextu. Nepřístupní členové jsou filtrovány ze seznamů členů IntelliSense. Například soukromí členové nejsou zobrazeni v seznamu členů, pokud neupravujete kód, který typ implementuje.Při otevření seznamu členů můžete stisknout kombinaci kláves Ctrl + J, chcete-li odebrat jednu úroveň filtrování (platí pouze pro aktuální okno seznam členů).Opětovným stiskem kláves Ctrl + J můžete odstranit textové filtrování a zobrazit každého člena.

  • Procházení parametru nápovědy. Podpis zobrazené funkce v popisku parametru nápovědy se nyní mění na základě skutečně zadaným počtu parametrů, namísto pouhého zobrazení libovolného podpisu bez aktualizace podle aktuálního kontextu.Parametr nápovědy také funguje správně při zobrazení ve vnořených funkcích.

  • Přepnutí záhlaví/kódový soubor. Můžete přepnout mezi záhlavím a odpovídajícím kódovým souborem pomocí příkazu na nabídce zkratek nebo klávesové zkratky.

  • Okna s vlastnostmi projektu C++ s možností změny velikosti.

  • Automatické generování kódu obslužné rutiny události v jazyce C++/CX a C++/CLI. Když píšete kód k přidání obslužné rutiny události v kódu souboru C++/CX nebo C++/CLI, editor může automaticky generovat definice delegáta instance a obslužnou rutinu události.Okno popisku se zobrazí, pokud je možné automaticky vygenerovat kód obslužné rutiny události.

  • Zvýšení povědomí o DPI. Nastavení sledování DPI v souborech manifestu aplikace nyní podporuje nastavení „Pro monitor: připraveno na vysoké rozlišení DPI“.

  • Rychlejší přepínání konfigurace. Pro velké aplikace lze přepínání konfigurace – zejména následné operace přepínání – provést mnohem rychleji.

  • Časové efektivita sestavení

    • Rychlejší sestavení. Četné optimalizace a využití více jader umožňují urychlit sestavení, zejména u velkých projektů.Přírůstková sestavení pro aplikace C++ odkazující na C++ WinMD jsou také mnohem rychlejší.
  • Informace o dalším doplnění a vylepšení v rozhraní IDE, viz Novinky v sadě Visual Studio 2013 a jiné články, na které odkazuje.

Viz také

Koncepty

Novinky v sadě Visual Studio 2013

Další zdroje

Blog týmu Visual C++