J'envisageais de relever le défi d'apprendre le C ++ pour concevoir des applications Metro et c'est à ce moment que j'ai rencontré C ++ / CX.
Les applications Metro peuvent-elles être codées en C ++ 11? Ont-ils besoin de C ++ / CX pour fonctionner? Et qu'est-ce que C ++ / CX exactement? Est-il possible de créer une application Metro en utilisant uniquement C ++, ou est-ce que C ++ / CX est requis? De plus, comment C ++ / CLI est-il lié à cette image?
Réponses:
Microsoft fabriquait simplement un système C ++ qui vous permettait d'accéder à son API Windows (appelée win32), puis un jour, ils ont inventé .NET et ont pensé que tout devait changer.
Ils ont donc créé des "extensions gérées pour C ++" qui étaient essentiellement du C ++ mais avec une charge d'extensions non standard, ajoutant des mots clés comme
__gc
pour prendre en charge les fonctionnalités .NET (comme l'allocation sur le tas GC plutôt que natif)Mais les gens n'aimaient pas cela car ce n'était vraiment pas le cas; t C ++, ayant tous ces mots clés supplémentaires, alors Microsoft l'a repensé et l'a appelé C ++ / CLI, qui avait un ensemble beaucoup plus petit de mots clés supplémentaires mais a introduit des changements de syntaxe comme le
^
(qui est un «pointeur» de référence vers un objet .NET sur le tas GC).Quelques années plus tard, Microsoft a réalisé que .NET n'était pas la solution miracle qu'ils l'avaient dit, et ils ont également fusionné leurs équipes Windows et Developer en lutte. Une partie de cette réévaluation a conduit à la création d'une toute nouvelle API Windows, appelée WinRT, qui est entièrement en code natif et cela signifiait que les anciennes extensions n'étaient plus utiles, alors Microsoft a développé leurs extensions C ++ pour en faire une qui rendait le travail avec le nouveau API WinRT plus facile - en conservant quelques extensions de C ++ / CLI (comme le ^).
Donc - voilà, 3 versions différentes d'un C ++ étendu qui est superficiellement C ++. Au moins, la dernière version est à nouveau du code natif, vous n'avez donc pas besoin d'utiliser les extensions si vous ne le souhaitez pas car vous pouvez accéder directement à l'API (elle s'appelle WRL et ressemble beaucoup aux anciennes classes de modèles ATL)
Si vous pensez que vous codez du code multiplateforme, vous ne le voudrez pas - vous pouvez modifier les appels d'API, mais vous ne pouvez pas utiliser le
^
sur un compilateur autre que Visual C ++. Je recommanderais d'utiliser l'API WRL et de garder votre code aussi standard que possible étant donné que le `` code supplémentaire '' que vous auriez besoin d'écrire par rapport à C ++ / CX n'est pas si bon.la source
Citant http://blogs.msdn.com/b/vcblog/archive/2012/08/29/cxxcxpart00anintroduction.aspx :
la source