Tour de France C++ 2005 http://www.microsoft.com/france/visualc/ Eric Mittelette :...

download Tour de France C++ 2005 http://www.microsoft.com/france/visualc/ Eric Mittelette : ericmitt@microsoft.com Eric Vernié : ericv@microsoft.com Relation Technique.

of 95

  • date post

    04-Apr-2015
  • Category

    Documents

  • view

    109
  • download

    4

Embed Size (px)

Transcript of Tour de France C++ 2005 http://www.microsoft.com/france/visualc/ Eric Mittelette :...

  • Page 1
  • Tour de France C++ 2005 http://www.microsoft.com/france/visualc/ Eric Mittelette : ericmitt@microsoft.com Eric Verni : ericv@microsoft.com Relation Technique Dveloppeurs
  • Page 2
  • HP Partenaire Mondial de Microsoft Intgrateur des technologies Microsoft : Plus de 10M de postes Windows 2000/XP dploys Plus de 13M de postes MS Exchange 2000/2003 dploys Services de support Microsoft Dveloppement conjoint de solutions verticales : HP OpenBank Banque HP CBI.NET Industrie HP ISM.NET Telecom Centre dexpertise et de benchmarks ddis Microsoft Un portfolio de solutions pour une infrastructure Microsoft tendue Serveurs 32 et 64 bits Stockage NAS, SAN Postes de travail Windows Mobile Phone Edition Windows XP Edition Tablette PC
  • Page 3
  • Agenda Introduction : tat de lart du C++ C++ Natif CompilateurBibliothques C++ et le monde.NET Rappel sur la CLR Extension Managed C++ C++ / CLI
  • Page 4
  • volution du Visual C++ 1998 Visual C++ 6.0 ATL3/MFC42 (6.0) 2002 Visual Studio.NET Visual C++ 7.0 Unified Visual Studio IDE & Debugger MFC7/ATL7, attributed programming, ATL Server Whole Program Optimization C++ Managed Extensions Fixed STL concurrency and DLL issues /GS Runtime Security Check 2003 Visual Studio 2003 Visual C++ 7.1 ISO Standard C++ Conformance /Arch:SSE/SSE2 floating point code generation Windows Forms Designer for Managed Extensions 2005 Visual Studio 2005 Visual C++ 8.0 C++/CLI Language Integrated 64-bit Compiler and Tools Profile Guided Optimization Safe Extension for CRT Project Property Manager, Source Navigation/Browsing MFC/Windows Forms Integration
  • Page 5
  • tat de lart du C++ Non le C++ nest pas mort Non le C++ nest pas mort Trs proche de la Norme ISO 98 (98%) volutions Support du standard ISO 98 PerformanceScurit Souvrir au monde.NET First class tool and language Plusieurs voies pour le future Code Natif (SDKs MFC ATL STL) Code Managed (Extensions et CLI) DDKs : reste loutil indispensable pour les drivers Embedded : code natif pour CE Longhorn : nouveau jeux APIs dans WinFX longue vie au C++ ! Jeux et DirectX : performances et framework au rendez vous (XNA)
  • Page 6
  • Compilateur C++ et norme ISO Depuis le dbut Microsoft fait voluer son compilateur Norme 1998, presque atteinte, aujourdhui: 98% de la norme Support des STL renforc Points non conforment la norme
  • Page 7
  • Portage de code Breaking changes (impact de la norme ANSI) Spcialisation explicite (plus de redfinition) Oprateur new lve dsormais des Exceptions ( std::nothrow pour revenir comme avant) Chanes littral (const char[n]) Surcharge des Template de fonctions changent Koening lookup Initialisation de base 0 Typename devient obligatoire dans les Template Friend a changer de comportement sur les classes Pointeurs sur Membres requirent un & Using, implicit const int ont chang Porte des dclarations de for a chang (Zc) I/O stream changement (#include )
  • Page 8
  • Rsum des changements la compilation
  • Page 9
  • Dmos Impact de la norme ISO 98 Koening lookup Spcialisation partielle des Templates InitialisationFriend Membre et pointeur Scope
  • Page 10
  • C++ Natif : Performances Options de compilation /Gy : Empaquetage des fonctions /G7 : Pentium 4 /arch:SSE[2] : (Utilisation des instructions et registres SSE) WPO /GL et /LTCG au link (Optimisation du code) PGO (Optimisation par instrumentation du code) Floating point Model /fp Intrinsec /Oi OpenMP : pragma pour le code multi processeur
  • Page 11
  • PGO en dtail La cration d'une application PGO s'effectue en trois grandes phases : Compilation en code instrument. Formation du code instrument ; Recompilation en code optimis.
  • Page 12
  • C++ Natif : Scurit Options de compilation Scurit /GS : prvention des dbordements de tampon. /RTC : aide au dbogage du code Analyse de code /prefast : identifie les leak, dbordement de tampon. CRT Scurise CRT scuris : ~ 400 modifications Par exemple : strcpy devient strcpy_s Fonction non sure dprcies par dfaut #define _CRT_SECURE_NO_DEPRECATE STL Scurise Itrateurs STL dtectent les dbordements de tampon
  • Page 13
  • Linker... Options du Linker ajoutes : /ASSEMBLYDEBUG gnre lattribut Debuggable et dsactive les optimisations JIT. /ASSEMBLYLINKRESOURCE Cr un lien vers une ressource dans le fichier de sortie /DELAYSIGN Place uniquement la public key dans assembly /KEYFILE Fichier contenant la cl /KEYCONTAINER Container de la cl /SAFESEH Avec /SAFESEH le linker produit uniquement une image si on peut gnrer une table des safe exception handlers. Cette table spcifie quels handlers seront utiliss pour limage.
  • Page 14
  • Compilateur, Linker... #Import De nouvelles options pour #import : auto_search Si la librairie importe contient des #import (importation en cascade). auto_rename Quand le mot cl de la librairie est un mot cl rserv du C++, __ est ajout devant le nom. no_search_namespace, rename_search_namespace, tlbid Gestion plus fine des imports et nom de namespaces.
  • Page 15
  • Dmos Options de compilation Scurit Buffer Overrun Analyse statique de code str_safe RTC check PerformancesWPOPGO
  • Page 16
  • Pause Retour dans 20 minutes Les speakers sont dans lescalier !
  • Page 17
  • Bibliothques Microsoft propose depuis ~20 ans des librairies: Les MFC voluent et se maintiennent comme classe librairies gnrant du code natif version non manage uniquement ATL, continue son volution vers STL Apparat comme Serveur WEB avec ATL Server
  • Page 18
  • MFC MFC V7.0 Cres ds les premires versions de Visual C++Cres ds les premires versions de Visual C++ Objectifs :Objectifs : Encapsuler les API Windows dans des classes C++Encapsuler les API Windows dans des classes C++ Propose une architecture Vue/ContrleurPropose une architecture Vue/Contrleur Document (n) Vues
  • Page 19
  • MFC Changements MFC 7 et 7.1: Connection maps ne sont plus compactes lors de la suppression dun connection point. Ainsi le connection point supprim est plac NULL. On doit donc tester NULL quand on utilise : CConnectionPoint::GetConnectionsConnectionPoint::GetNextConnection. Les fonctions suivantes lvent maintenant des exceptions: CSimpleString::FreeExtraCSimpleString::GetAt CSimpleString::operator [] CSimpleString::ReleaseBufferCSimpleString::ReleaseBufferSetLengthCStrBuf::SetLength CTime::CTime constructors.
  • Page 20
  • MFC CAsyncSocket supporte IPv6-via les membres: GetPeerNameEx, GetSockNameEx, ReceiveFromEx, et SendToEx. GetPeerNameEx, GetSockNameEx, ReceiveFromEx, et SendToEx. La classe CImage check le nombres dobjets crs. Quand le dcompte vaut 0, La fonction GdiplusShutdown est automatiquement appele pour librer les ressources GDI+ ( pil poil pour les objets crs dans une DLL :-) La classe CString a t rcrite sous forme de Template: CStringT On peut donc lutiliser dans des projets ATL sans un lien trop lourd aux MFC.
  • Page 21
  • MFC / ATL : Partage de classes
  • Page 22
  • Futur des MFC Reste The bibliothque native C++ de la plate forme Windows Continue dvoluer en MFC 8.0 (dtails venir) Travail doptimisation sur lintgration MFC/NET Intgration des contrles WindowsForm dans les dialogues MFC Intgrer aux mcanismes DDX, DDX_ManagedControl Intgration des WindowsForm dans les CViews Un namespace : Microsoft::VisualC::MFC
  • Page 23
  • Futur des MFC Win32/MFC Windows hosting Avalon XAML as Dialog, Wizards, Task Panes, etc. XAML as MFC Views Visuals for Rendering Animations and Multimedia Avalon Hosting Win32/MFC Windows XAML as top level window Win32/MFC Windows as Avalon control Avalon Hosting ActiveX Controls
  • Page 24
  • Futur MFC et XAML MFC hosting XAML Page in CControlBar as Task Pane CMDIChild hosting XAML Page as Child Window XAML Page hosting MFC CView as Element
  • Page 25
  • ATL Version 7.1/8 dans Visual Studio 2003/2005 A lorigine pour crer des objets ActiveX Faciliter la cration dobjet COM par des Templates de code C++
  • Page 26
  • ATL Souvre au WEB ATL Web Service Souvre aux librairies graphiques ATL Windowing et WTL Exploite la programmation par attributs Existe depuis lorigine de lIDL (coclass) Ajout de nouveaux attributs : event_source, event_receiver pour les connection points [ soap_method ] Pour les services Web Un premier pas vers AOP Traitement des Attributs ~ Code produit par Tisseurs A suivre !
  • Page 27
  • ATL Nouveauts des versions 7 et 7.1 Scurit ATL7 propose des wrappers pour les win32API de scurit. Fichiers CAtlFile CAtlTemporaryFile CAtlFileMappingBase/CAtlFileMapping ThreadingCWorkerThread: De nouvelles collections CAtlArray/CAtlList, CAtlArray/CAtlList, CRBTree/CRBMap /CRBMultiMap CString CStringT version Template
  • Page 28
  • ATL Version 8.0 (VS2005) Dtails des classes ajoutes et modifies dans les mois qui viennent (post Beta2)
  • Page 29
  • STL STL = Ensemble de headers dfinit par la norme 50 headers requis (+2 optionnels) + 18 headers du C standard
  • Page 30
  • STL Mise jour de limplmentation de la STL: hash_map Class hash_set Class Optional exception handling support. Amlioration code formatting (readability). Amlioration du support des DLL (passage dobjet entre process). Amlioration du support multithreading. Amlioration de la conformit aux standards. Using namespace std;