C ++ termasuk dan mengimpor perbedaan

Jawaban:

61

#import adalah hal khusus Microsoft, tampaknya hanya untuk barang COM atau .NET.

#include adalah pernyataan praprosesor C / C ++ standar, digunakan untuk menyertakan file header (atau terkadang kode sumber lainnya) dalam file kode sumber Anda.

Kepala Geek
sumber
7
Ini tidak benar. The # impor direktif secara resmi undeprecated oleh tim gcc di versi 3.4 dan berfungsi dengan baik 99% dari waktu dalam semua versi sebelumnya dari gcc yang support
Brian R. Bondy
6
... yang mendukung #import
Brian R. Bondy
1
Penasaran, saya tidak menyadarinya. Mungkin saya seharusnya mengatakan itu adalah hal khusus COM dan .NET sebagai gantinya.
Kepala Geek
25
#Import yang didukung oleh gcc adalah cara yang tidak dapat dibawa untuk menyertakan header satu kali saja: <a href=" gcc.gnu.org/onlinedocs/gcc-4.3.2/cpp/…> . Ini sama sekali tidak berhubungan dengan Microsoft COM # import.
fizzer
3
GCC #import sebenarnya adalah perintah preprocessor Objective-C yang kebetulan bekerja dengan file .c di gcc dan clang (kecuali dalam mode pedantic).
Michael Morris
83

Impor di VC ++: #import adalah untuk jenis perpustakaan atau .tlbs (COM hal-hal).

Konten pustaka tipe diubah menjadi kelas C ++, sebagian besar menjelaskan antarmuka COM untuk Anda secara otomatis, dan kemudian disertakan ke dalam file Anda.

The #importdirektif diperkenalkan oleh Microsoft sebagai ekstensi untuk bahasa C ++. Anda dapat membacanya di artikel MSDN ini .

The #importdirektif juga digunakan dengan NET / hal-hal CLI.

Impor di gcc: Impor di gcc berbeda dengan impor di VC ++. Ini adalah cara sederhana untuk menyertakan tajuk paling banyak sekali saja. (Di VC ++ dan GCC, Anda juga dapat melakukannya melalui #pragmasekali)

The #importdirektif secara resmi undeprecated oleh tim gcc di versi 3.4 dan berfungsi dengan baik 99% dari waktu dalam semua versi sebelumnya dari gcc yang dukungan

Include: #include adalah untuk sebagian besar file header, tetapi untuk menambahkan konten ke file Anda saat ini. #includeadalah bagian dari standar C ++. Anda dapat membacanya di artikel MSDN ini .

Brian R. Bondy
sumber
3
Tautan MSDN Anda sudah usang. Terima kasih Microsoft.
Markus Tebusan
9

#importsecara keseluruhan adalah solusi untuk yang biasa

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

bekerja di sekitar. #importmenyertakan file hanya jika belum pernah disertakan sebelumnya.

Perlu dicatat bahwa Objective-C Apple juga menggunakan #importpernyataan.

thatha
sumber
4

import juga merupakan salah satu kata kunci yang terkait dengan n2073, Modules in C ++ , diusulkan kepada komite bahasa oleh Daveed Vandevoorde pada September 2006. Saya tidak cukup ahli bahasa untuk mengetahui apakah proposal itu sudah pasti disimpan atau menunggu implementasi (bukti konsep) dari penulis atau orang lain ...

Don Wakefield
sumber
Daveed adalah karyawan EDG pada saat itu, jadi saya berharap mereka memiliki kode yang berfungsi.
MSalters
1
Saya yakin berharap mereka telah melakukan kerja keras yang diperlukan, karena akan sangat menyenangkan untuk beralih dari '#include' ke mekanisme impor. Tapi saya pernah mendengar nary mengintip fitur ini, dan saya cukup yakin itu tidak dalam C ++ 0X. Mungkin beberapa saat sebelum saya pensiun; ^) ~
Don Wakefield
1
Seperti yang saya takutkan, itu beberapa tahun lagi: Modules in C ++ 09?
Don Wakefield
4

Harap dicatat bahwa di gcc 4.1, #import sudah usang. Jika Anda menggunakannya, Anda akan mendapatkan peringatan:

#import adalah ekstensi GCC yang tidak digunakan lagi

Mike Godin
sumber
Ini tidak menjawab pertanyaan itu.
SS Anne