Novità relative a Visual C++ in Visual Studio 2012

In questo documento vengono descritte le funzionalità nuove e migliorate disponibili in Visual C++ in Visual Studio 2012.

Per informazioni su altre aggiunte in Visual Studio 2012, vedere Novità di Visual Studio 2012.

[!NOTA]

Per informazioni sulle funzionalità di (IDE) l'ambiente di sviluppo integrato per gli sviluppatori che creano applicazioni di Windows Store, vedere Compilare le applicazioni di archivio delle finestre mediante Visual Studio 2012.

Supporto migliorato per standard C++11

Hh409293.collapse_all(it-it,VS.110).gifLibreria di modelli standard

  • Supporto per nuovo Intestazioni STL: <atomic>, <chrono>, <condition_variable>, <filesystem>, <future>, <mutex>, <ratio>e <thread>.

  • Per ottimizzare l'utilizzo delle risorse di memoria, i contenitori sono ora più piccoli.Ad esempio, la modalità di rilascio x86 con le impostazioni predefinite, std::vector è ridotto a 16 byte in Visual Studio 2010 a 12 byte in Visual Studio 2012e std::map è ridotto a 16 byte in Visual Studio 2010 a 8 byte in Visual Studio 2012.

  • Come consentito ma non richiesto dallo standard C++11, gli iteratori SPAVENTOSI sono stati implementati.Per ulteriori informazioni, vedere il documento Assegnazione di inizializzazione SPAVENTOSE iteratoriPDF.

Hh409293.collapse_all(it-it,VS.110).gifAltri miglioramenti C++11

  • basato sull'intervallo dei cicli. È possibile scrivere cicli più affidabili eseguibili con le matrici, i contenitori STL e le raccolte di Windows Runtime nel form for (for-range-declaration:expression).Ciò fa parte del supporto linguistico principale.Per ulteriori informazioni, vedere Istruzione for basata su intervallo (C++).

  • Espressioni lambda indipendenti dallo stato, che consiste in un blocco di codice che iniziano con un introduttore vuoto di lambda [] e non acquisiscono variabili locali, è ora implicitamente convertibili ai puntatori a funzione in base alle esigenze standard C++11.Per ulteriori informazioni, vedere Espressioni lambda in C++.

  • Supporto di enumerazioni di Ambito. La enum- chiave C++ enum class è supportata.Il codice seguente viene illustrata questa enum- chiave è diverso dal comportamento precedente di enum.

    enum class Element { Hydrogen, Helium, Lithium, Beryllium };
    void func1(Element e);
    func1(Hydrogen); // error C2065: 'Hydrogen' : undeclared identifier
    func1(Element::Helium); // OK
    

supporto dello sviluppo di applicazioni diWindows Store

Compilatore e linker Visual C++

  • - Vectorizer auto. Il compilatore analizza i cicli nel codice e, laddove possibile generare istruzioni che utilizzano i registri e istruzioni vettoriale presenti in tutti i moderni processori.Ciò rende i cicli eseguito più velocemente.(Le istruzioni del processore sono note come SSE, per trasmettere le estensioni di SIMD).Non è necessario abilitare o richiedere questa ottimizzazione perché viene applicata automaticamente.

  • - Parallelizer auto. Il compilatore può analizzare i cicli nel codice e generare istruzioni che estendono i calcoli tramite i core o più processori.Ciò può eseguire cicli eseguito più velocemente.È necessario richiedere questa ottimizzazione perché non è abilitata per impostazione predefinita.In molti casi, consente di importare #pragma loop(hint_parallel(N)) nel codice immediatamente prima di cicli desiderato parallelizzato.

    Auto - vectorizer e auto - parallelizer possono essere utilizzati insieme in modo da estendere i calcoli tramite più core e il codice per gli utilizzi di ogni centro il vettore registra.Per ulteriori informazioni, vedere Errori e avvisi di Auto-Il parallelizzare.

Nuovo in Visual Studio 2012 Update 1

  • Windows XP di destinazione quando si compila il codice C++.

    È possibile utilizzare il compilatore e le librerie di Visual C++ per Windows XP e Windows Server 2003.Per ulteriori informazioni, vedere Configurazione di programmi C++ 11 per Windows XP.

Supporto di programmazione in parallelo

Hh409293.collapse_all(it-it,VS.110).gifParallelismo massiccio accelerazione C++ (AMP)

Il AMP C++ avvia l'esecuzione del codice C++ sfruttando hardware solo parallelo che è di solito presente come GPU su una scheda grafica discreta.Il modello di programmazione AMP C++ supporta matrici multidimensionali, indicizzazione, trasferimento di memoria, sezionamento e una libreria di funzioni matematiche.Utilizzo delle estensioni del linguaggio di AMP C++ e le restrizioni del compilatore, è possibile controllare il modo in cui i dati vengono spostati alla CPU a GPU e indietro.Per ulteriori informazioni, vedere C++ AMP (C++ Accelerated Massive Parallelism).

Hh409293.collapse_all(it-it,VS.110).gifIl Programmatore dispone di accelerazione il parallelismo massiccio (AMP) di debug e la profilatura

Debug. L'esperienza di debug per le applicazioni che utilizzano la AMP C++ per indirizzare la GPU è altrettanto debug per altre applicazioni C++.Ciò include le aggiunte di debug parallelo che sono state definite in precedenza.Vedere Debug del codice GPU.

La profilatura. È ora sta profilando il supporto per attività di GPU che si basa su AMP C++ e su altri modelli di programmazione di Direct3D-based.Vedere Grafico dell'attività GPU.

Hh409293.collapse_all(it-it,VS.110).gifMiglioramenti paralleli generali di programmazione

Con hardware che si sposta alle architetture di relazione e core multicore, gli sviluppatori non possono più utilizzare le velocità di clock in continuo aumento da un solo core.Il supporto di programmazione in parallelo in Runtime di concorrenza consente agli sviluppatori di sfruttare queste nuove architetture.

In Visual Studio 2010, le librerie importanti della parallelizzazione di C++ come PPL (parallel patterns library) sono state introdotte, insieme alle funzionalità di usufruire della concorrenza esprimendo pipeline specifici del flusso di dati.In Visual Studio 2012, queste raccolte sono state estese per fornire prestazioni migliori, un controllo e il supporto più dettagliato ai modelli in parallelo che gli sviluppatori richiedono la maggior parte.La larghezza della generazione ora include:

Hh409293.collapse_all(it-it,VS.110).gifMiglioramenti di debug parallelo generali

Oltre alla finestra Attività in parallelo e alla finestra Stack in parallelo, Visual Studio 2012 offre una nuova finestra Espressione di controllo in parallelo in modo da poter esaminare i valori di un'espressione in tutti i thread e processi ed esegue l'ordinamento e il filtro del risultato.È inoltre possibile utilizzare i visualizzatori personalizzati per estendere la finestra ed è possibile usufruire di nuovo supporto di più processi in tutte le finestre degli strumenti.Per ulteriori informazioni, vedere Procedura: utilizzare la finestra Espressione di controllo in parallelo.

IDE

Gli strumenti nell'IDE di Visual Studio presentano miglioramenti significativi per migliorare la produttività quando si codifica in C++.Per ulteriori informazioni sui miglioramenti dell'IDE di, vedere Principali caratteristiche per Visual Studio 2012.

  • Supporto dei modelli di Visual Studio. È ora possibile utilizzare la tecnologia dei modelli di Visual Studio per creare il progetto e modelli di elemento C++.

  • Caricamento asincrono della soluzione. I progetti verranno caricate parti principali del asynchronously-the di soluzione prima - così che è possibile avviare più veloce funzionante.

  • Distribuzione automatizzata per il debug remoto. La distribuzione dei file per il debug remoto in Visual C++ è stata semplificata.L'opzione di distribuzione nel menu di scelta rapida del progetto vengono copiati automaticamente nel computer remoto i file specificati nelle proprietà di debug di configurazione.La copia dei file manualmente al computer remoto non è più richiesta.Per ulteriori informazioni, vedere Debug remoto di un progetto compilato localmente.

  • C++/CLI IntelliSense. C++/CLI presenta supporto IntelliSense completo.Le funzionalità IntelliSense quali informazioni rapide, la guida di parametro, i membri dell'elenco e completamento automatico ora funzionano per C++/CLI.Inoltre, l'altro IntelliSense e i miglioramenti di l elencati in questo documento possono essere utilizzate anche per C++/CLI.

  • Descrizioni comandi avanzate di IntelliSense. Le descrizioni comandi di informazioni rapide C++ IntelliSense ora mostrano informazioni più dettagliate di stile di commenti per la documentazione XML.Se si sta utilizzando un'api da un livello, ad esempio C++ Amp- con commenti della documentazione XML, la descrizione comando di IntelliSense mostra più informazioni rispetto alla dichiarazione.Inoltre, se il codice contiene commenti della documentazione XML, descrizioni comandi IntelliSense verranno visualizzate informazioni più dettagliate.

  • Costrutti di codice C++. Il codice di base è disponibile per l'opzione, if-else, per il ciclo e altri costrutti di codice di base, nell'elenco a discesa dei membri.Selezionare una parte di codice dall'elenco per inserirlo nel codice quindi compilare la logica necessaria.È inoltre possibile creare i propri parti di codice personalizzati da utilizzare nell'editor.Per ulteriori informazioni, vedere Frammenti di codice.

  • Miglioramenti dei membri. L'elenco a discesa dei membri dell'elenco viene visualizzata automaticamente quando si digita il codice nell'editor di codice.I risultati vengono filtrati, in modo che solo i membri appropriati vengono visualizzati durante la digitazione.È possibile controllare il tipo di logica di filtro utilizzata dal membro Elenco- nella finestra di dialogo Options in Editor di testo, C/C++, Avanzata.Per ulteriori informazioni, vedere Utilizzo di IntelliSense.

  • La colorazione semantica. I tipi, enumerazioni, macro e altri token C++ dispongono ora di colorazione per impostazione predefinita.Per ulteriori informazioni, vedere Scrittura di codice nell'Editor di testo e del codice.

  • Evidenziazione di riferimento. Selezionare un simbolo ora vengono evidenziate tutte le istanze del simbolo nel file corrente.Premere la freccia di Ctrl+Shift+Up o la freccia di Ctrl+Shift+Down di spostarsi tra i riferimenti evidenziati.È possibile disattivare questa funzionalità fuori della finestra di dialogo Options, in Editor di testo, C/C++, Avanzata.

Strumenti di gestione del ciclo di vita delle applicazioni

Hh409293.collapse_all(it-it,VS.110).gifAnalisi codice statico

L'analisi statica per C++ è stata aggiornata per fornire informazioni sul contesto più dettagliate di errore, più regole di analisi e i migliori risultati di analisi.Nella nuova finestra ANALISI CODICE, è possibile filtrare i messaggi dalla parola chiave, dal progetto e alla gravità.Quando si seleziona un messaggio nella finestra, la riga nel codice se il messaggio è stato attivato viene evidenziata nell'editor di codice.Per alcuni avvisi di C++, il messaggio sono elencate le righe di codice sorgente che mostrano il percorso di esecuzione che consente all'avviso, punti di scelta e i motivi per escludere che il percorso specifico è evidenziato.

L'analisi codice è inclusa nella maggior parte dei problemi di Visual Studio 2012.In professional, problemi e premium e ultimate, tutte le regole sono incluse.Nelle edizioni express di Windows 8 e Windows Phone, solo gli avvisi più critici vengono inclusi.L'analisi codice non è inclusa in visual web developer Express edition per il web.

Di seguito sono riportati alcuni altri miglioramenti di analisi codice:

  • I nuovi avvisi di concorrenza consentono di evitare i bug di concorrenza assicurando che utilizzi le discipline corrette di blocco nei programmi multithread C/C++.L'analizzatore di rilevare violazioni del contratto race condition, le inversioni di ordinamento del blocco, il blocco potenziali chiamante/chiamato, operazioni di sincronizzazione non corrispondenti e altri bug di concorrenza.

  • È possibile specificare C++ regole da applicare alle esecuzioni di analisi codice utilizzando il set di regole.

  • Nella finestra ANALISI CODICE, è possibile inserire nel codice sorgente un pragma per eliminare un avviso selezionato.

  • È possibile migliorare l'accuratezza e la completezza di analisi codice statico con la nuova versione di Linguaggio di annotazione del codice sorgente Microsoft (SAL) per descrivere come una funzione utilizza i parametri, le ipotesi che esegue su di essi e le garanzie che viene effettuata quando si completa.

  • Supporto per i progetti di bit C++.

Per ulteriori informazioni su come migliorare la qualità del codice, vedere Analisi della qualità dell'applicazione tramite gli strumenti di analisi del codice.

Hh409293.collapse_all(it-it,VS.110).gifUnit test aggiornato Framework

Utilizzare il nuovo framework di unit test per C++ in Visual Studio per scrivere unit test per C++.Aggiungere un nuovo progetto di unit test alla soluzione esistente C++ individuazione del modello Progetto unit test C++ nella categoria Visual C++ nella finestra di dialogo Nuovo progetto.Iniziare la scrittura degli unit test nello stub di Unittest1.cpp codice generato di TEST_METHOD nel file.Quando il codice di test viene scritto, compilare la soluzione.Quando si desidera eseguire i test, aprire una finestra Esplora unit test scegliendo Visualizza, Altre finestre, Esplora unit test, quindi scegliere dal menu di scelta rapida per il test case che si desidera, scegliere Esecuzione del test selezionato.Dopo l'esecuzione dei test, è possibile visualizzare i risultati del test e altre informazioni di traccia dello stack nella stessa finestra.Vedere Verifica del codice tramite unit test e Creazione ed esecuzione di unit test in un'app di Windows Store.

Hh409293.collapse_all(it-it,VS.110).gifGrafici dipendenze di architettura

Per comprendere meglio il codice, è possibile generare grafici dipendenze per il binario, la classe, lo spazio dei nomi e i file di inclusione in una soluzione.Sulla barra dei menu, scegliere Architettura, Genera grafico dipendenzee quinPer Soluzione o Per file di inclusione per generare un grafico dipendenze.Quando la generazione del grafico è completa, è possibile spostarsi espandendo ogni nodo, apprendono le relazioni di dipendenza lo spostamento tra i nodi e l'esplorazione del codice sorgente scegliendo Visualizza contenuti nel menu di scelta rapida di un nodo.Per generare un grafico dipendenze per i file di inclusione, scegliere dal menu di scelta rapida per un file di codice sorgente di *.cpp o un file di intestazione *.h, scegliere Genera grafico dei file di inclusione.Vedere Visualizzare le dipendenze di codice nei grafici dipendenze.

Hh409293.collapse_all(it-it,VS.110).gifEsplora architettura

Tramite Esplora architettura, è possibile esplorare le risorse nella soluzione, o file C++.Sulla barra dei menu, scegliere Architettura, Finestre, Esplora architettura.È possibile selezionare un nodo di interesse, ad esempio, Visualizzazione classi.In questo caso, la destra della finestra degli strumenti viene estesa con un elenco degli spazi dei nomi.Se si seleziona uno spazio dei nomi, una nuova colonna contiene un elenco di classi, della struttura e delle enumerazioni in questo spazio dei nomi.È possibile continuare a esplorare le risorse, o restituisce una colonna a sinistra dell'estrema sinistra per avviare un'altra query.Vedere Trovare codice con Esplora architettura.

Hh409293.collapse_all(it-it,VS.110).gifCode coverage

Il code coverage sono state aggiornate per instrumentare i binari compilati dinamicamente in fase di esecuzione.Questo riduce l'overhead di configurazione e garantisce prestazioni migliori.È inoltre possibile raccogliere dati di code coverage dagli unit test per l'applicazione di C++.Per ulteriori informazioni su come creare ed eseguire unit test di esecuzione, vedere la sezione del Framework per unit test del documento.Dopo avere creato gli unit test per C++, è possibile utilizzare Esplora unit test per individuare i test nella soluzione.Per eseguire unit test e raccogliere dati di code coverage relativi, in Esplora unit test, scegliere Analizza code coverage.È possibile esaminare i risultati di code coverage in Risultati code coverage della barra dei menu, scegliere Prova, Finestre, Risultati code coverage.Vedere Utilizzo di code coverage per determinare la quantità di codice testato.

Vedere anche

Concetti

Novità di Visual Studio 2012

Altre risorse

Blog del team di Visual C++

Visual C++ in Visual Studio 2012