В чем разница между #include
и #import
в С++?
C++ включают и импортируют разницу
Ответ 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