Quelle est la différence entre #include
et #import
en C++?C + + inclure et importer la différence
Répondre
#import
est une chose spécifique à Microsoft, apparemment pour les choses COM ou .NET seulement.
#include
est une instruction de préprocesseur C/C++ standard, utilisée pour inclure des fichiers d'en-tête (ou occasionnellement d'autres sources) dans votre fichier de code source.
L'importation dans VC++:#import
est pour les bibliothèques de type ou .tlbs (commandes COM).
Le contenu de la bibliothèque de types est converti en classes C++, décrivant pour la plupart les interfaces COM pour vous automatiquement, puis il est inclus dans votre fichier.
La directive #import
a été introduite par Microsoft en tant qu'extension du langage C++. Vous pouvez lire à ce sujet au this MSDN article.
La directive #import
est également utilisée avec les éléments .NET/CLI.
Importation dans gcc: L'importation dans gcc est différente de l'importation dans VC++. C'est un moyen simple d'inclure un en-tête au plus une fois seulement. (Dans VC++ et GCC vous pouvez le faire via #pragma
une fois aussi)
La directive #import
a été officiellement undeprecated par l'équipe gcc en version 3.4 et fonctionne très bien 99% du temps dans toutes les versions précédentes de gcc qui prennent en charge
Inclure:#include
est pour la plupart des fichiers d'en-tête, mais pour préfixer le contenu à votre fichier actuel. #include
fait partie de la norme C++. Vous pouvez lire à ce sujet au this MSDN article.
importation était aussi l'un des mots-clés associés à n2073, Modules in C++, proposé au comité des langues par Daveed Vandevoorde en Septembre 2006. Je ne suis pas assez d'un geek de langue pour savoir si cette proposition était définitivement mis de côté ou si elle est en attente une mise en œuvre (preuve de concept) de l'auteur ou quelqu'un d'autre ...
Daveed était un employé d'EDG à ce moment-là, donc je m'attendrais à ce qu'ils aient un code qui fonctionne. – MSalters
J'espère bien qu'ils ont fait le travail requis, car il serait très agréable de passer de '#include' à un mécanisme d'importation. Mais j'ai entendu un bip sur cette fonctionnalité, et je suis sûr que ce n'est pas en C++ 0X. Peut-être avant que je ne prenne ma retraite; ^) ~ –
Comme je le craignais, il y a quelques années: [Modules dans C++ 09?] (Http://groups.google.com/group/comp.lang.c++. modéré/msg/5ce3042a8de03284? dmode = source) –
#import
est une solution globale au travail autour d'habitude
#ifndef ...
#define ...
#include ...
#endif
. #import
inclut un fichier uniquement s'il n'a pas été inclus auparavant.
Il peut être utile de noter que l'Objective-C d'Apple utilise également les instructions #import
.
Veuillez noter que dans gcc 4.1, #import
est obsolète. Si vous l'utilisez, vous obtiendrez avertissement:
#import
est une extension de GCC dépréciée
- 1. Objective-C Importer
- 2. Quelle est la différence entre [X, Y, Z] .each {| m | inclure m} et inclure X, Y, Z?
- 3. Quelle est la différence entre C et Embedded C?
- 4. Quelle est la différence entre% c et% C dans printf?
- 5. C# comparaisons de chaînes: Différence entre CurrentCultureIgnoreCase et InvariantCultureIgnoreCase
- 6. Objective-C: différence entre id et void *
- 7. Quelle est la différence entre memset et memcpy dans C
- 8. Dites la différence entre Vista et XP [C]
- 9. Quelle est la différence entre 'int?' et 'int' en C#?
- 10. Quelle est la différence entre read et readline en C#?
- 11. Différence C++ entre 0 et 0,0
- 12. différence xp_sendmail et sp_send_dbmail proc
- 13. Différence entre l'application Windows et la console
- 14. LINQ: Différence entre 'Sélectionnez c' et 'Select nouvelle (c ...'
- 15. Tricky inclure situation dans C
- 16. C++ Différence d'ensemble STL
- 17. ActiveRecord: Clever Devenez membre et Inclure
- 18. Entity Framework: Héritage et Inclure
- 19. Quelle est la différence entre le flux de fichiers en C et iostream en C++?
- 20. Quelle est la différence entre les méthodes anonymes (C# 2.0) et les expressions lambda (C# 3.0)?
- 21. Quelle est la différence entre dict() et {}?
- 22. tformfwd et tforminv - quelle est la différence?
- 23. quelle est la différence entre:.! et: r !?
- 24. Quelle est la différence entre = et: =
- 25. La différence entre Monitor.Pulse et Monitor.PulseAll
- 26. Différence entre scanf() et fgets()
- 27. C# Inclure le contrôle dérivé dans la boîte à outils
- 28. C#: comment inclure les DLL dépendantes?
- 29. Différence dans les hachages SHA entre ruby et C#
- 30. Différence entre implémentation implicite et explicite des interfaces C#
Ce n'est pas vrai. La directive #import a été officiellement non dédaignée par l'équipe de gcc dans la version 3.4 et fonctionne très bien 99% du temps dans toutes les versions précédentes de gcc qui supportent –
... qui supportent #import –
Curieux, je n'étais pas au courant de cela. Peut-être aurais-je dû dire que c'est une chose spécifique à COM- et .NET à la place. –