C++ включают и импортируют разницу

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

Ответ 1

#import - это специфическая для Microsoft вещь, видимо, только для материалов COM или .NET.

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

Ответ 2

Импорт в VС++: #import предназначен для библиотек типов или .tlbs(COM-материал).

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

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

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

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

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

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

Ответ 3

#import является общим решением обычного

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

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

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

Ответ 4

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

Ответ 5

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

#import - устаревшее расширение GCC