C ++ içerme ve içe aktarma farkı


Yanıtlar:


61

#import Microsoft'a özgü bir şey, görünüşe göre sadece COM veya .NET için.

#include kaynak kodu dosyanıza başlık (veya bazen diğer kaynak kodu) dosyalarını dahil etmek için kullanılan standart bir C / C ++ ön işlemci ifadesidir.


7
Bu doğru değil. Alma yönergesi resmen sürüm 3.4 içinde gcc ekibi tarafından undeprecated ve hangi destek gcc önceki tüm sürümlerinde ince% 99 zaman çalışır edildi
Brian R. Bondy

6
... # ithalat desteği
Brian R. Bondy

1
Meraklı, bunun farkında değildim. Belki de bunun COM ve .NET'e özgü bir şey olduğunu söylemeliydim.
Baş Geek

25
Gcc tarafından desteklenen #import, yalnızca bir kez başlık eklemenin taşınabilir olmayan bir yoludur: <a href=" gcc.gnu.org/onlinedocs/gcc-4.3.2/cpp/…> . Microsoft COM ile hiçbir ilgisi yoktur # ithalat.
fizzer

3
GCC #import, aslında gcc ve clang'daki .c dosyalarıyla (bilgiçlik modu dışında) çalışan bir Objective-C ön işlemcisi komutudur.
Michael Morris

85

VC ++ 'da içe aktar: #import tür kitaplıkları veya .tlbs (COM öğeleri) içindir.

Tür kitaplığının içeriği, çoğunlukla sizin için otomatik olarak COM arabirimlerini açıklayan C ++ sınıflarına dönüştürülür ve ardından dosyanıza dahil edilir.

#importYönergesi C ++ dilinin bir uzantısı olarak Microsoft tarafından tanıtıldı. Bunu bu MSDN makalesinde okuyabilirsiniz .

#importDirektif ayrıca .NET / CLI şeylerle kullanılır.

Gcc'de içe aktarma: gcc'deki içe aktarma, VC ++ 'daki içe aktarmadan farklıdır. En fazla bir kez başlık eklemenin basit bir yoludur. (VC ++ ve GCC'de bunu bir #pragmakez de yapabilirsiniz)

#importYönerge resmen sürüm 3.4 içinde gcc ekibi tarafından undeprecated ve hangi destek gcc önceki tüm sürümlerinde ince% 99 zaman çalışır edildi

Dahil et: #include çoğunlukla başlık dosyaları içindir, ancak içeriği geçerli dosyanızın başına eklemek içindir. #includeC ++ standardının bir parçasıdır. Bunu bu MSDN makalesinde okuyabilirsiniz .


4
MSDN bağlantılarınız eski. Teşekkürler Microsoft.
Mark Ransom

9

#importgenel olarak olağan bir çözümdür

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

çalışma ortamı. #importyalnızca daha önce dahil edilmemişse bir dosya içerir.

Apple'ın Objective-C'sinin de #importbeyanlar kullandığını belirtmekte fayda var .


4

import aynı zamanda , Eylül 2006'da Daveed Vandevoorde tarafından dil komitesine önerilen n2073, Modules in C ++ ile ilişkili anahtar kelimelerden biriydi. Bu önerinin kesin olarak rafa kaldırılıp kaldırılmadığını veya bir uygulamayı bekliyor olup olmadığını bilecek kadar bir dil meraklısı değilim (kavram kanıtı) yazardan veya başka birinden ...


Daveed o sırada bir EDG çalışanıydı, bu yüzden onlardan böyle çalışan bir kod almalarını beklerdim.
MSalters

1
Umarım gerekli ayak işlerini yapmışlardır, çünkü '#include'dan bir içe aktarma mekanizmasına geçmek çok güzel olurdu. Ancak bu özelliğe hiç bir şey duymadım ve C ++ 0X'te olmadığından eminim. Belki ben emekli olmadan önce; ^) ~
Don Wakefield

1
Korktuğum gibi, birkaç yıl geçti: C ++ 09'daki modüller?
Don Wakefield

4

Gcc 4.1, lütfen unutmayın #import edilir kullanımdan kaldırıldı. Eğer kullanırsanız, uyarı alırsınız:

#import kullanımdan kaldırılmış bir GCC uzantısıdır


Bu soruya cevap vermiyor.
SS Anne
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.