web-dev-qa-db-fra.com

Différence d'inclusion et d'importation C ++

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

89
Marius

#import est une chose spécifique à Microsoft, apparemment uniquement pour les trucs 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 source) dans votre fichier de code source.

57
Head Geek

Importation dans VC++: #import Est destiné aux bibliothèques de types ou .tlbs (trucs 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 A été introduite par Microsoft comme une extension du langage C++. Vous pouvez en lire plus sur cet article MSDN .

La directive #import Est également utilisée avec des é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 maximum une fois. (Dans VC++ et GCC, vous pouvez également le faire via #pragma)

La directive #import N'a pas été officiellement dépréciée par l'équipe 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

Inclure: #include Est destiné principalement aux fichiers d'en-tête, mais pour ajouter le contenu à votre fichier actuel. #include Fait partie de la norme C++. Vous pouvez en lire plus sur cet article MSDN .

73
Brian R. Bondy

#import est globalement un solution à l'habituel

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

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

Il convient de noter que l'Objective-C d'Apple utilise également #import déclarations.

8
thatha

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 un connaisseur de langage pour savoir si cette proposition a été définitivement mise de côté ou si elle attend une implémentation (preuve de concept) de l'auteur ou de quelqu'un d'autre ...

4
Don Wakefield

Veuillez noter que dans gcc 4.1, #importis déconseillé. Si vous l'utilisez, vous obtiendrez un avertissement:

#import est une extension GCC obsolète

3
Mike Godin