Microsoft, Windows API'larına (win32 adı verilen) erişmenizi sağlayan bir C ++ sistemi kullanıyordu, bir gün .NET'i icat ettiler ve her şeyin değişmesi gerektiğini düşündüler.
Onlar gibi anahtar kelimeler ekleyerek, temelde C olan "C ++ için Yönetilen Uzantılar" ++ ama standart dışı uzantıları bir yük ile oluşturulan Yani __gc
(yerli bir yerine GC yığın ayırmak gibi) desteği .NET özelliklerine
Ancak, insanlar bundan çok hoşlanmıyorlardı; t C ++, tüm bu ekstra anahtar kelimelere sahipti, bu yüzden Microsoft, onu yeniden tasarladı ve çok daha küçük bir ek anahtar kelime kümesi olan ancak ^
şu gibi sözdizimi değişiklikleri getirdi : GC öbekindeki bir .NET nesnesine bir referans 'işaretçi').
Birkaç yıl sonra Microsoft, .NET’in söylediği gümüş kurşun olmadığını fark etti ve savaşçı Windows ve Geliştirici ekiplerini birleştirdi. Bu yeniden değerlendirmenin bir kısmı, tamamen yerel kod olan WinRT adlı yepyeni bir Windows API oluşturulmasına neden oldu ve bu eski uzantıların artık kullanışlı olmadığı anlamına geliyordu, bu nedenle Microsoft, C ++ uzantılarını yeni sürümle çalışarak geliştirdi. WinRT API'si daha kolay - C ++ / CLI'dan (^ gibi) bir kaç uzantı alarak.
Yani - işte, yüzeysel olarak C ++ olan genişletilmiş bir C ++ 'ın 3 farklı sürümü. En azından en son sürüm yine yerel koddur, bu nedenle doğrudan API'ye erişebilmeyi istemiyorsanız, uzantıları kullanmanıza gerek yoktur (WRL olarak adlandırılır ve eski ATL şablon sınıfları gibidir)
İstemediğiniz platformlar arası kodları kodladığınızı düşünüyorsanız, API çağrılarını değiştirebilirsiniz, ancak ^
Visual C ++ dışındaki herhangi bir derleyicide kullanamazsınız . WRL API'sini kullanmanızı ve C ++ / CX ile karşılaştırıldığında yazmanız gereken 'ekstra kod' verildiğinde kodunuzu mümkün olduğunca standart tutmanızı tavsiye ederim.