Aracılığıyla paylaş


Bağlantı özellikleri

"Bağlantı specification" terimi için farklı dillerde yazılmış işlevleri (veya yordamları) bağlama iletişim kuralı anlamına gelir.Aşağıdaki arama kuralları etkilenir:

  • Adları büyük/küçük harf duyarlılığı.

  • Adları decoration.c, derleyici adları bir alt çizgi ekler.Bu genellikle "decoration." olarak adlandırılır C++'da, ad düzenleme aracılığıyla bağlantı aşama türü bilgileri saklamak için kullanılır.(Bkz: donatılmış adları)

  • Sıra bağımsız bir yığında bekleniyordu.

  • Yığında işlev ayarlama sorumluluk dönün.Çağrılan işlev veya işlevini çağırırken sorumludur.

  • (Mi gizli herhangi bir bağımsız değişkeni iletilir) gizli bağımsız değişkenleri gönderiliyor.

extern string-literal { declaration-list }
extern string-literal declaration

Varolan kodu kullanımını sağlayarak c koduna C++ giderek porting bağlantı belirtimi kolaylaştırır.

Microsoft özel

Şu anda Microsoft C++ tarafından desteklenen tek bağlantı özellikleri olan "c" ve "C++".

SON Microsoft özel

Aşağıdaki örnek işlevlerini bildirir atoi ve atol c bağlantı ile:

extern "C"
{
    int  atoi( char *string );
    long atol( char *string );
}

Bu işlev çağrıları, c bağlantı kullanılarak yapılır.Bu iki bildirimleri ile aynı sonucu elde edilebilir:

extern "C" int  atoi( char *string );
extern "C" long atol( char *string );

Microsoft özel

Tüm Microsoft c Standart C++ derlemesi algılamak için dosyaları kullan koşullu derleme yönergeleri içerir.Prototipler içine C++ derlemesi algılandığında, bir extern "c" yönergesini aşağıdaki gibi:

// Sample.h
#if defined(__cplusplus)
extern "C"
{
#endif

// Function declarations

#if defined(__cplusplus)
}
#endif 

SON Microsoft özel

Standart içerik dosyaları işlevlerinde bildirmeniz gerekmez extern "c".

Bir işlev aşırı yüklüyse, işlevleri aynı adı geçmeyen biri bağlantı belirleyici olabilir.(Daha fazla bilgi için bkz: İşlevlerin aşırı.)

Aşağıdaki tabloda, çeşitli bağlantı belirtimleri çalışma gösterir.

Bağlantı özellikleri etkilerini

Belirtimi

Etki

Bir nesne üzerinde

Sadece o nesnenin bağlantı'yı etkiler

Bir işlevi

Bu işlev ve tüm işlevleri veya nesneleri etkiler bağlantı içinde bildirilen

Bir sınıf üzerinde

Bağlantı'yı tüm dahil olmayan işlevler ve sınıf içinde bildirilen nesneleri etkiler

Kabul etmelisiniz birden fazla bağlantı belirtimi, bir işlevi vardır c ve C++ bağlantı olarak işlevlerini bildirmek için bir hatadır.Üstelik iki bildirimleri bir işlev için bir program ortaya varsa — bağlantı belirtimi ve olmayan biriyle — bağlantı belirtimi bildirimiyle ilk.Bağlantı belirtimi olan işlevlerin herhangi bir yedek bildirimleri ilk bildiriminde belirtilen bağlantı verilir.Örne?in:

extern "C" int CFunc1();
...
int CFunc1();            // Redeclaration is benign; C linkage is
                         //  retained.

int CFunc2();
...
extern "C" int CFunc2(); // Error: not the first declaration of
                         //  CFunc2;  cannot contain linkage
                         //  specifier.

İşlevler ve nesneleri açıkça bildirilen olarak statik bileşik bağlantı belirleyici gövdesi içinde ({}) statik işlevleri veya nesneleri; olarak kabul edilir bağlantı belirteci gözardı edilir.Diğer işlevler ve nesneleri kullanılarak bildirilen gibi davranmasını extern anahtar sözcüğü.(Bkz: kullanarak dış bağlantı belirtmek için hakkında ayrıntılı bilgi için extern anahtar sözcüğünü.)

Ayrıca bkz.

Başvuru

Dış bağlantı belirtmek için kullanma