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 i
static
external_i
adresi 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 i
değ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ı
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin