Aracılığıyla paylaş


extern Depolama Sınıfı Tanımlayıcısı

Depolama sınıfı tanımlayıcısı extern ile bildirilen bir değişken, başka bir kaynak dosyada tanımlanan aynı ada sahip bir değişkene başvurudur. Dış düzey değişken tanımını görünür hale getirmek için kullanılır. olarak extern bildirilen değişkenin kendisi için ayrılmış depolama alanı yoktur; yalnızca bir addır.

Örnek

Bu örnekte, iç ve dış düzeyi bildirimler gösterilmektedir:


// Source1.c

int i = 1;

// Source2. c

#include <stdio.h>

// Refers to the i that is defined in Source1.c:
extern int i;

void func(void);

int main()
{
    // Prints 1:
    printf_s("%d\n", i);
    func();
    return;
}

void func(void)
{
    // Address of global i assigned to pointer variable:
    static int *external_i = &i;

    // This definition of i hides the global i in Source.c:
    int i = 16;

    // Prints 16, 1:
    printf_s("%d\n%d\n", i, *external_i);
}

Bu örnekte değişken i Source1.c içinde ilk değeri 1 olan şekilde tanımlanmıştır. Source2.c'deki bir extern bildirim, 'i' öğesini bu dosyada görünür hale getirir.

işlevinde func , işaretçi değişkenini başlatmak için genel değişkenin istaticexternal_iadresi kullanılır. Genel değişkenin yaşam süresi olduğundan static , yani adresi program yürütme sırasında değişmediğinden bu işe yarar. Ardından, bir değişken i , kapsamında func ilk değeri 16 olan bir yerel değişken olarak tanımlanır. Bu tanım, yerel değişken için adının kullanılmasıyla gizlenen dış düzey ideğerini etkilemez. Genel değere i artık yalnızca işaretçisi external_iüzerinden erişilebilir.

Ayrıca bkz.

Internal-Level Bildirimleri için Depolama Sınıfı Tanımlayıcıları