C ++ include et import différence

Quelle est la différence entre #include et #import en C ++?

#import est une chose spécifique à Microsoft, apparemment uniquement pour les éléments COM ou .NET.

#include est une instruction de préprocesseur C / C ++ standard, utilisée pour inclure des fichiers d’en-tête (ou parfois d’autres codes sources) dans votre fichier de code source.

Importer dans VC ++: #import est pour les bibliothèques de types ou .tlbs (éléments COM).

Le contenu de la bibliothèque de types est converti en classes C ++, décrivant principalement les interfaces COM pour vous automatiquement, puis il est inclus dans votre fichier.

La directive #import été introduite par Microsoft en tant qu’extension du langage C ++. Vous pouvez lire à ce sujet dans cet article MSDN .

La directive #import est également utilisée avec les éléments .NET / CLI.

Importer 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 maximum une fois seulement. (Dans VC ++ et GCC, vous pouvez également le faire via #pragma )

La directive #import été officiellement déconseillée par l’équipe gcc dans la version 3.4 et fonctionne correctement 99% du temps dans toutes les versions précédentes de gcc qui supportent

Include: #include est principalement utilisé pour les fichiers d’en-tête, mais pour append le contenu à votre fichier actuel. #include fait partie du standard C ++. Vous pouvez lire à ce sujet dans cet article MSDN .

#import est globalement une solution aux habituels

 #ifndef ... #define ... #include ... #endif 

solution de contournement. #import inclut un fichier uniquement s’il n’a pas été inclus auparavant.

Il peut être intéressant de noter que l’Objective-C d’Apple utilise également les instructions #import .

import était également l’un des mots-clés associés à n2073, Modules en C ++ , proposé au comité de langue par Daveed Vandevoorde en septembre 2006. Je ne suis pas assez geek pour savoir si cette proposition a été définitivement mise en attente ou en attente d’implémentation (preuve de concept) de l’auteur ou de quelqu’un d’autre …

Veuillez noter que dans gcc 4.1, #import est obsolète. Si vous l’utilisez, vous recevrez un avertissement:

#import est une extension GCC obsolète