C ++ включает и импортирует разницу - PullRequest
86 голосов
/ 05 октября 2008

В чем разница между #include и #import в C ++?

Ответы [ 5 ]

73 голосов
/ 05 октября 2008

Импорт в VC ++: #import для библиотек типов или .tlbs (COM материал).

Содержимое библиотеки типов преобразуется в классы C ++, в основном описывающие интерфейсы COM для вас автоматически, а затем включается в ваш файл.

Директива #import была введена Microsoft как расширение языка C ++. Вы можете прочитать об этом в этой статье MSDN .

Директива #import также используется с вещами .NET / CLI.

Импорт в gcc: Импорт в gcc отличается от импорта в VC ++. Это простой способ включить заголовок не более одного раза. (В VC ++ и GCC вы также можете сделать это через #pragma один раз)

Директива #import была официально аннулирована командой gcc в версии 3.4 и прекрасно работает 99% времени во всех предыдущих версиях gcc, которые поддерживают

Включить: #include в основном для заголовочных файлов, но для добавления содержимого к текущему файлу. #include является частью стандарта C ++. Вы можете прочитать об этом в этой статье MSDN .

54 голосов
/ 05 октября 2008

#import относится к Microsoft, по-видимому, только для COM или .NET.

#include - это стандартный оператор препроцессора C / C ++, используемый для включения файлов заголовка (или иногда другого исходного кода) в файл исходного кода.

8 голосов
/ 07 апреля 2009

#import в целом решение к обычному

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

обходным. #import включает файл, только если он не был включен ранее.

Возможно, стоит отметить, что в Objective-C от Apple также используются операторы #import.

4 голосов
/ 06 октября 2008

import было также одним из ключевых слов, связанных с n2073, Модули в C ++ , предложенными Дэйвидом Вандеворде в сентябре 2006 года. Для меня недостаточно языка вы знаете, было ли это предложение окончательно отложено или его ожидает реализация (подтверждение концепции) от автора или кого-то еще ...

3 голосов
/ 22 января 2010

Обратите внимание, что в gcc 4.1 #import является устаревшим. Если вы используете его, вы получите предупреждение:

#import является устаревшим расширением GCC

...