1. Ano ang extern
?
Sa wika ng C, ang extern
ay isang keyword na nagpapahiwatig na ikaw ay “nahihiram” ang isang variable o function na tinukoy sa ibang file. Halimbawa, kung nais mong gamitin ang isang global variable na tinukoy sa isang file mula sa ibang file, gagamitin mo ang extern
. Kapag ang isang programa ay nahahati sa maraming file, ang extern
ay tumutulong na magbahagi ng data sa pagitan nila.
Isipin ito nang ganito: ang iyong programa ay parang isang bahay na may maraming kwarto, at ang extern
ay parang isang “kasunduan sa paghihiram” na nagpapahintulot sa iyo na gumamit ng isang tool mula sa katabing kwarto. Ito ay nangangahulugang, “Ang bagay na ito ay hindi narito, ngunit makikita mo ito sa ibang file.”
Halimbawa
// file1.c
int g_data = 100;
// file2.c
extern int g_data;
void printData() {
printf("%dn", g_data); // Nag-a-access sa g_data na tinukoy sa file1.c
}
Sa halimbawang ito, ang g_data
ay tinukoy sa file1.c
, at sa pamamagitan ng paggamit ng extern
, ang file2.c
ay makakapag-access sa variable na iyon.

2. Relasyon Sa Pagitan Ng extern
at Mga Global na Variable
extern
ay malapit na nauugnay sa mga global na variable. Isang global na variable, kapag na-define na, ay maaaring ma-access mula sa anumang file sa programa. Gayunpaman, ang iba pang mga file ay hindi awtomatikong nakakaalam ng pag-iral nito. Doon papasok ang extern
— ito ay nagsasabi sa iba pang mga file, “Hoy, umiiral ang variable na ito sa ibang lugar!”
Isang mahalagang bagay na dapat tandaan: extern
ay isang deklarasyon lamang, hindi isang definisyon. Ito ay hindi nag-aallocate ng memorya. Ang aktwal na memorya para sa variable ay nag-aallocate sa orihinal na file kung saan ito ay na-define.
Halimbawa ng Isang Global na Variable
// file1.c
int counter = 0;
// file2.c
extern int counter; // Tumutukoy sa counter na na-define sa ibang file
void incrementCounter() {
counter++; // Nag-a-update ng value ng counter
}
3. Paggamit ng extern
sa Header Files
Sa malalaking proyekto, ang paulit-ulit na pagdedeklara ng mga variable o function sa bawat file ay maaaring maging mapagpaguran. Doon papasok ang mga header file. Ang isang header file ay isang sentralisadong lugar upang iimbak ang impormasyong kailangang ibahagi sa maraming file. Sa pamamagitan ng paglalagay ng mga extern
declaration sa isang header file, ginagawa mong madali para sa iba pang mga file na tumukoy sa parehong global variables o functions.
Maaari mong isipin ang isang header file bilang isang “kahon ng mga kagamitan” para sa buong proyekto. Nag-uugnay ito ng mga nakabahaging kagamitan sa isang lugar, upang ang iba pang mga file ay maaari lamang isama ito at gamitin ang kanilang kailangan.
Halimbawa ng isang Header File
// globals.h
extern int global_variable;
void printGlobalVariable();
// file1.c
#include "globals.h"
int global_variable = 10;
// file2.c
#include "globals.h"
void printGlobalVariable() {
printf("%dn", global_variable);
}

4. Mga Karaniwang Pagkakamali sa extern
May ilang mahahalagang punto na dapat tandaan kapag gumagamit ng extern
. Halimbawa, hindi mo maaaring i-inisyalisa ang isang variable kapag gumagamit ng extern
. Dahil ang extern
ay deklarasyon lamang — hindi definisyon. Gayundin, kung magde-declare ka ng variable gamit ang extern
sa isang file kung saan hindi umiiral ang aktwal na definisyon, magreresulta ito sa linker error ang programa.
Karaniwang Pagkakamali
extern int data = 100; // Ang inisyalisasyon ay hindi pinapayagan dito
Tulad ng ipinakita sa itaas, ang pagsisikap na i-inisyalisa ang isang variable gamit ang extern
ay magdudulot ng error. Ang extern
ay ginagamit upang mag-referensya sa isang variable na nai-define sa ibang file, hindi upang i-define o i-inisyalisa ito.
5. Mga Praktikal na Halimbawa ng Paggamit ng extern
extern
ay lalong kapaki-pakinabang sa malalaking proyekto. Halimbawa, sa mga programa na sumasaklaw sa maraming module, maaari kang magdeklara ng naibahaging data o mga function gamit ang extern
, at mulitin ang paggamit nito sa iba’t ibang file.
Ang diskong ito ay nagpo-promote ng modularity sa iyong programa, na ginagawang mas madali ang pag-maintain at pag-unawa sa codebase. Bawat file ay maaaring gumana nang independientemente habang nagbabahagi pa rin ng kinakailangang data sa pamamagitan ng extern
declarations.
Praktikal na Halimbawa
// main.c
#include "globals.h"
int main() {
printGlobalVariable(); // Tumatawag ng function na defined sa ibang file
return 0;
}
// globals.c
#include "globals.h"
int global_variable = 100;
void printGlobalVariable() {
printf("%dn", global_variable); // Nagpi-print ng global variable
}
Ang artikulong ito ay tumakip sa lahat mula sa basics ng extern
hanggang sa praktikal na paggamit. Ang pag-unawa kung paano gumagana ang extern
ay mahalaga para sa paghihiwalay at pag-reuse ng code sa C programming.