Modifiche di prodotto: Visual C++ .NET 2002

Aggiornamento: novembre 2007

Nota:

È possibile che alcune funzionalità citate in questo argomento non siano più presenti nella versione attuale di Visual C++. Per ulteriori informazioni, vedere Novità di Visual C++.

Microsoft Visual C++ .NET 2002 presenta molte nuove funzionalità e numerosi miglioramenti.

  • Codice gestito e destinazione di .NET Framework

  • Programmazione con attributi

  • Compilatore Visual C++, linker e linguaggio Visual C++

  • Ambiente di sviluppo

  • Editor di risorse

  • Librerie

  • Distribuzione e ridistribuzione di un'applicazione

  • Esempi di Visual C++ .NET

Codice gestito e destinazione di .NET Framework

In Visual C++ vengono introdotti due modi di scrivere il codice gestito, entrambi progettati per semplificare la programmazione COM e consentire ai programmi di accedere ai servizi forniti da .NET Common Language Runtime, come le procedure di Garbage Collection e l'interoperabilità dei linguaggi.

  • Estensioni gestite per C++: utilizzare queste estensioni per continuare a scrivere il codice C++ nei programmi esistenti.

  • Visual C#: è un nuovo linguaggio di programmazione semplice, indipendente dai tipi e orientato agli oggetti. Evoluzione di C e C++, C# è stato progettato per semplificare la creazione di nuove applicazioni di .NET Framework.

Programmazione con attributi

Gli attributi costituiscono un metodo rapido ed efficiente per semplificare la programmazione COM in Visual C++. Gli attributi, come le parole chiave C++, sono utilizzati nei file di origine e interpretati dal compilatore. Consentono di modificare il comportamento del codice esistente e persino di inserire un codice framework aggiuntivo per eseguire attività di base, come l'implementazione dei controlli ActiveX, la creazione di una class factory o la formattazione di un comando di database. È possibile applicare gli attributi pressoché a qualsiasi oggetto Visual C++, come classi, membri di dati e funzioni membro o inserirli nel codice sorgente come istruzioni autonome.

Nella Guida in linea di Visual C++ sono presenti procedure dettagliate relative agli attributi comprendenti vari aspetti della programmazione con attributi.

Compilatore Visual C++, linker e linguaggio Visual C++

Le funzionalità di compilatore, linker, altri strumenti di generazione e linguaggio Visual C++ sono nuove per Visual C++ .NET. Va segnalato inoltre l'aggiornamento della libreria standard di C++.

Compilatore

  • Problemi di compatibilità standard in Visual C++.

  • Opzione del compilatore /AI.

  • Opzione del compilatore /clr.

  • Opzione del compilatore /FU.

  • Opzione del compilatore /Fx.

  • Opzione del compilatore /GH.

  • L'opzione del compilatore /Gi è stata rimossa; il compilatore Visual C++ non esegue più compilazione incrementale. L'opzione /Gi verrà ignorata dal compilatore in modo invisibile all'utente.

  • L'opzione del compilatore /GD è stata rimossa.

  • Opzione del compilatore /GL.

  • Opzione del compilatore /GS.

  • Nuove parole chiave associate alle estensioni gestite per C++.

  • L'opzione /Qlfist è ora documentata.

  • /O1 e /O2 ora utilizzano /GF invece di /Gf.

  • /Ox, /O1 e /O2 ora utilizzano /Ob2 invece di /Ob1.

  • Opzione del compilatore /RTC.

  • Opzione del compilatore /showIncludes.

  • L'opzione del compilatore /w ora consente di specificare il comportamento di determinati avvisi.

  • L'opzione del compilatore /Wall consente di attivare tutti gli avvisi, compresi quelli disattivati per impostazione predefinita.

  • Opzione del compilatore /WL.

  • Opzione del compilatore /Wp64.

  • Opzione del compilatore /Y.

  • Opzione del compilatore /Zc:forScope.

  • Opzione del compilatore /Zc:wchar_t.

  • Elenco di avvisi disattivati per impostazione predefinita.

  • Espressioni booleane di tipo bool anziché BOOL.

Linker

  • Opzione del linker /ALLOWBIND.

  • Opzione del linker /ASSEMBLYMODULE.

  • Opzione del linker /ASSEMBLYRESOURCE.

  • L'opzione del linker /COMMENT è obsoleta. Utilizzare il pragma comment.

  • L'utilità CVPACK è stata rimossa.

  • L'opzione del linker /DEBUGTYPE è stata rimossa. Il supporto di simboli in formato COFF non è più presente; i simboli devono ora essere inseriti in file pdb.

  • L'opzione del linker /GPSIZE è stata rimossa. Il linker determina l'allocazione ottimale per le variabili comuni (elementi di dati globali non inizializzati) in base alla presenza di rilocazioni relative a GP ai dati.

  • Opzione del linker /IDLOUT.

  • Opzione del linker /IGNOREIDL.

  • /LINK50COMPAT è stata rimossa. Le librerie di importazione create con Visual C++ .NET sono compatibili con Visual C++ 6.0.

  • Opzione del linker /LTCG.

  • /MAPINFO:FIXUPS è stata rimossa.

  • Opzione del linker /MIDL.

  • Opzione del linker /NOASSEMBLY.

  • L'opzione del linker /PDB:NONE è stata rimossa. Le informazioni di debug nel file exe non sono più supportate.

  • Opzione del linker /PDBSTRIPPED.

  • L'opzione del linker /PDBTYPE è stata rimossa. Le informazioni di debug vengono inserite in un unico file PDB.

  • L'opzione del linker /PROFILE è stata rimossa. Se si utilizza un profiler di altri produttori che richiede /PROFILE, utilizzare invece /FIXED:NO. In questa versione il linker accetterà comunque /PROFILE come sinonimo di /FIXED:NO.

  • Il profiler del codice sorgente, un'utilità del linker, è stato rimosso.

  • Opzione del linker /TLBID.

  • Opzione del linker /TLBOUT.

  • Opzione del linker /TSAWARE.

  • L'opzione del linker /WARN è stata rimossa.

Dumpbin

  • Opzione /CLRHEADER.

  • L'opzione /IMPORTS per l'utilità DUMPBIN accetta ora un parametro facoltativo che consente di visualizzare le importazioni da una DLL specificata.

  • Opzione /PDBPATH.

  • I parametri /RAWDATA vengono rinominati, ma la sintassi delle release precedenti rimane valida.

  • Opzione /UNWINDINFO.

Linguaggio Visual C++

  • La parola chiave _AddressOfReturnAddress è ora documentata.

  • Parola chiave __alignof.

  • Vengono ora supportati i tipi covarianti restituiti dalle funzioni.

  • Parola chiave __declspec(align).

  • Parola chiave __declspec(deprecated).

  • Parola chiave __declspec(noinline).

  • La parola chiave __declspec(selectany) supporta ora gli oggetti allocati dinamicamente, ossia oggetti inizializzati da un costruttore.

  • Parola chiave __event.

  • L'istruzione for in /Ze è stata modificata per aderire meglio al comportamento standard.

  • Parole chiave __if_exists e __if_not_exists

  • Parola chiave __interface.

  • Sono ora supportati i blocchi function-try.

  • Tipo di dati __m64

  • Tipo di dati __m128.

  • Tipo di dati __m128d.

  • Tipo di dati __m128i.

  • Intrinseci SSE2, SSE e MMX.

  • Parola chiave __super.

  • La parola chiave template consente ora i parametri di template.

  • Sintassi throw(...).

  • Intrinseco del compilatore __assume.

  • Intrinseco del compilatore __debugbreak.

  • Intrinseco del compilatore __noop.

  • Override espliciti.

  • Il limite sui livelli di parentesi nidificate in un'unica espressione è pari a 256.

  • La parola chiave _ReturnAddress è ora documentata.

  • Parola chiave __sealed.

  • Parola chiave __w64.

  • wchar_t è ora un tipo di dati nativo.

  • Nuove parole chiave associate alle estensioni gestite per C++.

Preprocessore

  • Pragma conform.

  • Macro predefinita __COUNTER__.

  • Pragma deprecated.

  • Macro predefinita __FUNCDNAME__.

  • Macro predefinita __FUNCSIG__.

  • Macro predefinita __FUNCTION__.

  • Direttiva #import:

  • È ora possibile specificare librerie dei tipi per progid o libid.

  • Di seguito sono elencati i nuovi attributi contenuti nella direttiva #import:

    • embedded_idl

    • no_dual_interfaces

    • no_smartpointers

  • Direttiva del preprocessore _MANAGED.

  • Pragma gestiti e non gestiti.

  • Il pragma pack dispone ora di un'opzione show per visualizzare il valore di pack corrente.

  • pop_macro è ora documentata.

  • push_macro è ora documentata.

  • Pragma runtime_checks.

  • Pragma section.

  • Direttiva #using.

  • Direttiva del preprocessore __WCHAR_T_DEFINED.

Ambiente di sviluppo

Le seguenti modifiche e funzionalità relative all'ambiente di sviluppo costituiscono altre novità di Visual C++ .NET.

  • Visualizzazione classi è stata estesa.

  • Esclusione di file durante il controllo delle dipendenze (nuova procedura).

  • La finestra Proprietà fornisce una griglia personalizzabile per la visualizzazione e la modifica delle proprietà di oggetti nel progetto.

  • Le pagine delle proprietà del progetto consentono di specificare le impostazioni di generazione per i progetti.

  • Le procedure guidate sono ora progettate in HTML e JScript, con file di testo di supporto, per rendere le procedure guidate personalizzate più flessibili ed estensibili.

  • La barra delle procedure guidate e la Creazione guidata classe sono state rimosse.

  • La personalizzazione del processo di generazione è un nuovo evento di pre-generazione.

  • La procedura guidata di creazione di nuovi database è stata rimossa da Visual C++ .NET.

  • L'esportazione di un makefile NMAKE non è più disponibile. Utilizzare le opzioni della riga di comando devenv per generare un progetto Visual C++ dalla riga di comando.

  • Le opzioni /Gf dei progetti Visual C++ 6.0 che utilizzano /Gf e che vengono importati nella nuova versione verranno convertite in /GF.

Editor di risorse

Barra degli strumenti dell'editor di immagini e selettore di opzioni

La barra degli strumenti dell'editor di immagini è denominata Grafica in Visual C++ 6.0. I pulsanti della barra degli strumenti sono pressoché gli stessi (strumenti per disegnare, dipingere, immettere testo, cancellare e modificare le visualizzazioni), ma il comportamento e la presentazione della barra degli strumenti sono stati leggermente modificati.

In Visual C++ 6.0 la barra degli strumenti Grafica era inizialmente una finestra ancorata sulla sinistra dell'area di lavoro e il selettore di opzioni veniva visualizzato sotto forma di casella nella barra degli strumenti. In Visual C++ .NET, la barra degli strumenti dell'editor di immagini viene visualizzata nella parte superiore dell'area di lavoro. Il selettore di opzioni viene ora visualizzato all'estremità destra della barra degli strumenti dell'editor di immagini come un pulsante con freccia a discesa. L'icona sul pulsante del selettore di opzioni varia a seconda dello strumento selezionato.

Finestra di dialogo Strumento Testo sulla barra degli strumenti dell'editor di immagini

In Visual Studio .NET il comportamento della finestra di dialogo Strumento Testo è stato modificato rispetto a Visual C++ 6.0.

Azione

Risultato in Visual C++ 6.0

Risultato in Visual Studio .NET

Premere INVIO

Veniva immessa una nuova riga nel testo.

Consente di uscire da Strumento Testo e di salvare le modifiche.

Fare clic sul pulsante Chiudi

Consentiva di uscire da Strumento Testo e salvare le modifiche.

Consente di uscire da Strumento Testo e di salvare le modifiche.

Premere ESC

Consentiva di uscire da Strumento Testo e salvare le modifiche.

Consente di uscire da Strumento Testo e di ignorare le modifiche.

Premere MAIUSC + INVIO

Non applicabile

Immette una nuova riga nel testo.

Premere CTRL + INVIO

Non applicabile

Immette una nuova riga nel testo.

Con queste modifiche, il comportamento di Strumento Testo è reso più simile alle finestre di dialogo standard e agli altri strumenti dell'editor di immagini.

Librerie

Nota:

È possibile che alcune funzionalità citate in questo argomento non siano più presenti nella versione attuale di Visual C++. Per ulteriori informazioni, vedere Novità di Visual C++.

Le librerie indicate di seguito e incluse in Visual C++ .NET sono nuove o sono state modificate.

ATL (Active Template Library)

  • Sono state modificate le impostazioni predefinite dei progetti ATL.

  • Altri argomenti correlati relativi ai metodi ATL contengono esempi di codice.

  • Supporto per insiemi ed enumeratori: ICollectionOnSTLImpl, IEnumOnSTLImpl, CComEnumImpl, CComEnumOnSTL, CComEnum

  • La nuova classe CImage fornisce il supporto avanzato per le bitmap, compresa la possibilità di caricare e salvare immagini nei formati JPEG, GIF, BMP e PNG (Portable Network Graphics).

  • Nuove classi per la gestione di matrici, elenchi e strutture: CAtlArray, CAtlList, CAtlMap, CRBMap e CRBMultiMap.

  • Nuove classi e macro per la conversione di stringhe.

  • Classi di utilità: CAdapt.

  • Hosting di controlli ActiveX: IAxWinAmbientDispatch, IAxWinHostWindow, CAxWindow2

  • Miglioramenti a CComBSTR e CComVariant

  • Nuove macro: OBJECT_ENTRY_AUTO e OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO

  • Creazione di oggetti semplificata: CComCoClass::CreateInstance

  • Supporto per debug migliorato: _ATL_DEBUG_INTERFACES

  • Supporto del Registro di sistema per i valori REG_MULTI_SZ: CRegKey

  • Nuove classi di sicurezza: CAcl, CDacl, CSacl, CSecurityAttributes, CSecurityDesc, CSid, CTokenGroups e CTokenPrivileges.

  • Nuove classi di gestione delle matrici: CSimpleArray, CSimpleMap, CComSafeArray, CComSafeArrayBound.

  • Una classe oggetto Currency: CComCurrency.

  • Le macro ATL riportate di seguito devono essere considerate obsolete: atlTraceFlags, ATLTrace, BEGIN_OBJECT_MAP, OBJECT_ENTRY, END_OBJECT_MAP.

  • Sono stati sostituiti diversi metodi ATL.

  • La funzionalità di CComModule è stata distribuita in diverse nuove classi.

ATL Server

ATL Server è un insieme di classi C++ native che consente agli sviluppatori di creare applicazioni Web, servizi Web XML e altre applicazioni server. Molte classi possono inoltre essere utilizzate in applicazioni o componenti client.

Libreria di runtime C

  • Funzioni di controllo degli errori di runtime

  • L'operatore new è in grado di generare un'eccezione o di restituire zero se l'allocazione di memoria ha esito negativo.

  • Recuperare dagli overflow dello stack con _resetstkoflw.

  • Nuove funzioni per la gestione di date posteriori all'anno 2038:

    _ctime64

    _wfindnext64

    _gmtime64

    _wstat64

    _wctime64

    _fstat64

    _localtime64

    _time64

    _findfirst64

    _ftime64

    _mktime64

    _utime64

    _wfindfirst64

    _futime64

    _stat64

    _wutime64

    _findnext64

     

     

     

  • Configurare i controlli dell'heap di debug con _CrtSetDbgFlag.

  • Determinare i tipi di blocchi e sottoblocchi _CrtReportBlockType

  • Costanti Math

  • Nuove funzioni di caratteri estesi:

    _cwprintf

    _putwch

    _putws

    _wtof

  • Nuove versioni __int64 delle funzioni stringa:

    _strtoi64

    _strtoui64

    _wctoi64

    _wcstoui64

  • Nuove versioni Unicode delle funzioni console:

    _getwch

    _ungetwch

    cgetws

    _getwche

    _cwscanf

     

     

     

  • Nuove funzioni stringa per calcolare il numero di caratteri necessari per stampare i dati formattati:

    _scprintf

    _scwprintf

    _vscprintf

    _vscwprintf

    _snscanf

    _snwscanf

     

     

  • Funzioni di allineamento dei dati.

  • _set_security_error_handler, per la registrazione di un gestore errori di sicurezza.

  • Dato il tempo richiesto per il rilascio di C99, questa versione di Visual C++ non è conforme a tale standard.

  • Nuove funzioni di scambio di byte: _byteswap_uint64, _byteswap_ulong, _byteswap_ushort.

  • _set_SSE2_enable per utilizzare le istruzioni SSE2.

  • _CrtSetReportHook2.

Libreria MFC (Microsoft Foundation Class)

  • Negli argomenti correlati a MFC vengono forniti centinaia di nuovi esempi di codice.

  • Cast statico e mappe messaggi MFC: a partire da Visual C++ .NET, MFC consente un controllo più accurato dei tipi restituiti e dei tipi dei parametri delle funzioni di gestore messaggi. Con questo nuovo comportamento, lo sviluppatore riceve la notifica dei potenziali problemi sotto forma di messaggio di errore relativo ai gestori messaggi potenzialmente non sicuri. MFC utilizza cast statici per ON_MESSAGE, ON_REGISTERED_MESSAGE, ON_THREAD_MESSAGE e ON_REGISTERED_THREAD_MESSAGE.

    Ad esempio, in passato era possibile utilizzare una funzione membro che restituiva void invece di LRESULT per ON_MESSAGE o ON_REGISTERED_MESSAGE ed effettuare la compilazione senza errori. Con Visual C++ .NET, il potenziale errore di cast viene rilevato e segnalato. Lo sviluppatore è in grado di risolvere il potenziale problema sostituendo il tipo restituito (con LRESULT) e ripetere la compilazione.

  • Componente di modifica DHTML: CHtmlEditCtrl, CHtmlEditView, CHtmlEditDoc

  • Finestre di dialogo DHTML: CDHtmlDialog, CMultiPageDHtmlDialog

  • Supporto ISAPI per analizzare gli elenchi di argomenti: CHttpArg, CHttpArgList

  • Supporto per controlli privi di finestra: COleControlSite, COleControlContainer e COccManager

  • Supporto migliorato per l'utilizzo della Guida in linea HTML in un'applicazione MFC.

  • Finestra delle proprietà di stampa di Windows 2000: CPrintDialogEx

  • Supporto DAO: nella Creazione guidata applicazione MFC di Visual C++ e nella Creazione guidata applicazione DLL MFC non sono più supportati i progetti di database DAO. È ancora possibile aggiungere le classi derivate da DAO tramite Aggiunta guidata classe. Si consiglia di utilizzare OLE DB oppure ODBC per i nuovi progetti di C++ nativo e di utilizzare DAO solo per la manutenzione delle applicazioni già esistenti.

  • TRACE0, TRACE1, TRACE2 e TRACE3 sono ora considerati obsoleti; utilizzare ATLTRACE2. TRACE ha ora la stessa funzionalità di ATLTRACE2.

  • Quando si seleziona un carattere per la finestra di dialogo, scegliere MS Shell Dlg e non caratteri MS Sans Serif o Helv. Nelle versioni precedenti di MFC, i caratteri MS Sans Serif o Helv venivano sostituiti automaticamente con DEFAULT_GUI_FONT o con il carattere di sistema. Questa funzionalità non è più disponibile.

  • Supporto avanzato per risorse localizzate nelle DLL satellite.

Modelli OLE DB

In Visual C++ sono disponibili i seguenti modelli OLE DB:

  • Nuove classi consumer: CDataConnection, CDynamicAccessor, CDynamicParameterAccessor, CDynamicStringAccessor, CDynamicStringAccessorA, CDynamicStringAccessorW, CStreamRowset, CXMLAccessor.

  • Nuove macro consumer: le macro COLUMN_NAME* per l'associazione a una colonna del database per nome e le macro BLOB* per l'associazione di oggetti BLOB (binary large object).

  • Nuove classi provider: IDBSchemaRowsetImpl, IErrorRecordsImpl, IRowsetChangeImpl, IRowsetCreatorImpl, IRowsetNotifyCP, IRowsetNotifyImpl, IRowsetLocateImpl, IRowsetUpdateImpl.

Nuovi tipi di dati a 64 bit

I metodi di varie classi di modelli OLE DB sono stati modificati per utilizzare i nuovi tipi di dati a 64 bit invece di quelli precedenti a 32 bit. La documentazione è stata aggiornata per riflettere queste modifiche. In caso di discrepanza tra la documentazione e i file di intestazione (atldb.h, atldbcli.h e atldbsch.h), i file di intestazione contengono i tipi di parametri più aggiornati.

Classi condivise

In ogni programma Visual C++ è ora possibile utilizzare alcune classi nuove e modificate.

Libreria standard di C++

La libreria standard di C++ è stata aggiornata:

  • Classe hash_map

  • Classe hash_set

  • Supporto facoltativo della gestione delle eccezioni.

  • Formattazione migliorata del codice (leggibilità).

  • Supporto DLL migliorato (passaggio di oggetti che superano i limiti dei processi).

  • Supporto multithreading migliorato.

  • Conformità allo standard migliorata.

Libreria iostream precedente

In Visual C++ l'uso della libreria iostream precedente è obsoleto. Ogni volta che si utilizza una funzione iostream si riceve un avviso. È possibile che la libreria iostream precedente venga rimossa in una successiva versione di rilascio.

Distribuzione e ridistribuzione di un'applicazione

Nota:

È possibile che alcune funzionalità citate in questo argomento non siano più presenti nella versione attuale di Visual C++. Per ulteriori informazioni, vedere Novità di Visual C++.

Per ridistribuire un'applicazione Visual C++, è possibile utilizzare la distribuzione in Visual Studio che consente di creare eseguibili di installazione, preparare file ed eseguire la pubblicazione su siti Web.

Se non si intende utilizzare la distribuzione di Visual Studio e si dispone di un'applicazione Visual C++ nativa, ovvero non gestita, è possibile individuare le dipendenze dell'applicazione e sviluppare un proprio processo di installazione.

Esempi di Visual C++ .NET

Nota:

È possibile che alcune funzionalità citate in questo argomento non siano più presenti nella versione attuale di Visual C++. Per ulteriori informazioni, vedere Novità di Visual C++.

Visual C++ .NET comprende una serie di esempi nuovi relativi alle seguenti aree:

  • Libreria di runtime C

  • ATL Server

  • Attributi

  • Estensioni gestite per C++

  • MASM

  • Debug

  • Creazione guidata personalizzata

    Nota:

    Poiché l'architettura della procedura guidata è cambiata, gli esempi forniti in precedenza per le creazioni guidate personalizzate sono stati ritirati e ne sono stati forniti di nuovi.

  • Modello di codice

  • Modello di progetto

  • Gestione degli eventi

  • Internazionale

  • Applicazione Tailspin Toys

In Visual C++ .NET inoltre sono inclusi nuovi esempi per le aree indicate di seguito, oltre agli esempi forniti nelle versioni precedenti:

  • MFC

  • ATL

  • Supporto COM

  • Libreria STL (Standard Template Library)

Vedere anche

Altre risorse

Modifiche di prodotto nelle versioni di Visual C++