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 1 başlangıç değeriyle tanımlanı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 i static external_iadresi kullanılır. Bu, genel değişkenin yaşam süresi olduğundan static çalışır, yani adresi program yürütme sırasında değişmez. Ardından, bir değişken i kapsamı func içinde 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üzeyi ideğerini etkilemez. Genel i değeri artık yalnızca işaretçisi external_iaracılığıyla erişilebilir.

Ayrıca bkz.

İç Düzey Bildirimleri Depolama Sınıfı Tanımlayıcıları