C++/CLI és Managed C++

Bevezetés

Összefoglalás

Mindkét nyelv tulajdonságai - mint ahogy a nevük is sugallja - sokban egyeznek a C++ nyelvével, ezért ebben a leírásban inkább csak az eltéréseit részletezzük, hogy segítséget nyújtson gyakorlati szempontból azoknak, akik esetleg szeretnének a .NET környezetben programozni, de ragaszkodnak a megszokott C++ szintaktikához, illetve szeretnék a hagyományos C++ kódban írt programjukat a .NET keretrendszerben futtatni.

A Managed C++ elavult, a .NET 1.x-es változatához készült. A .Net 2.0-tól felváltotta a C++/CLI nyelv, a Microsoft oldalán található automatikus konverter Managed C++ projectekhez. Éppen ezért a meglévő Managed C++ anyagot - bár hiányos - nem tervezem bővítetni, ahol szükséges, rámutatok a C++/CLI és Managed C++ közti különbségekre. A fő cél a C++/CLI bemutatása.

Mi a Managed C++

Managed (Extensions for) C++ a Microsoft eltéréseinek összessége a C++-tól, beleértve a grammatikai és szintaktikai kiterjesztéseket, kulcsszavakat, attribútumokat. Ezek a kiterjesztések (extensions) elérhetővé teszik a C++ nyelvet a .NET keretrendszer számára mint felügyelt (managed), illetve hagyományos (native) kódként. Nem önálló nyelv, csak egy bővítménye a C++-nak. A Managed C++ kód képes együttműködni más .NET nyelvekkel, mint például VB .NET és C# .NET.

A Managed C++-t úgy tervezték, hogy a lehető legjobban illeszkedjen a meglévő C++ konvenciókhoz.

Mi a C++/CLI

A Visual C++ fejlesztői a felhasználók panaszait hallgatva eldöntötte, hogy teljesen újratervezi a CLR támogatást a Visual C++ 2005-ös verziójában. Ez az új terv lett a C++/CLI, melynek célja, hogy sokkal természetesebb szintaxist nyújtson a .NET/CLR típusok készítéséhez és használatához.

Követelmény volt, hogy a .NET programozása pont ugyanolyan természetesnek tűnjön, mint a natív C++ alkalmazások fejlesztése. A C++ nyelvet számos új kulcsszóval bővítették, bizonyos szempontból egy önálló nyelvvé vált. A C++/CLI forráskódok sokkal átláthatóbbak, olvashatóbbak, mint a Managed C++ kódok; az összkép közelebb áll a szabványos C++ nyelvhez, ugyanakkor az új nyelvi elemek miatt a kód hordozhatósága csökkent.

Különlegességei a .NET nyelvek között:

Miért "felügyelt" C++?

A felügyeltség arra utal, hogy a program futását a .NET keretrendszer felügyeli, mely a szemétgyűjtésen kívül a rendszer biztonságáért is felel, mint például puffer túlcsordítás megakadályozása, stb. A kód nem közvetlenül gépi kódra fordul mint a hagyományos C++ alkalmazásoknál, hanem egy köztes nyelvre, amelyet Microsoft Intermediate Language (MSIL)-nek neveznek. Az MSIL bájtkódot a Common Language Runtime (CLR) hajtja végre, úgy, hogy lefordítja azt gépi utasításokra. A Common Language Runtime (CLR) fő feladatai: memóriakezelés, szálak kezelése, szemétgyűjtés ( garbage collection), biztonság.