1. Apa itu extern
?
Dalam bahasa C, extern
adalah sinyal untuk “meminjam” variabel atau fungsi yang didefinisikan di file lain. Misalnya, ketika Anda ingin menggunakan variabel global yang sudah didefinisikan di satu file pada file lain, Anda menggunakan extern
. Saat program dibagi menjadi beberapa file, extern
digunakan untuk berbagi data antar file tersebut.
Bayangkan saja, di dalam program terdapat banyak ruangan, dan extern
berfungsi seperti “kontrak peminjaman alat” dari ruangan sebelah. Artinya, “di sini tidak ada, tapi ada di ruangan sebelah.”
Contoh
// file1.c
int g_data = 100;
// file2.c
extern int g_data;
void printData() {
printf("%d\n", g_data); // Mengakses g_data di file1.c
}
Pada contoh di atas, g_data
didefinisikan di file1.c
, tetapi dengan menggunakan extern
, variabel tersebut dapat diakses dari file2.c
.

2. Hubungan antara extern
dan Variabel Global
extern
sangat berkaitan dengan variabel global. Setelah variabel global didefinisikan sekali dalam program, variabel tersebut bisa diakses dari file mana pun. Namun, file lain tidak akan tahu keberadaan variabel itu kecuali Anda mendeklarasikannya dengan extern
sebagai penanda “ada di sini!”
Penting untuk dicatat bahwa extern
hanya deklarasi, sehingga tidak mengalokasikan memori. Alokasi memori variabel dilakukan di file asalnya.
Contoh Variabel Global
// file1.c
int counter = 0;
// file2.c
extern int counter; // Menggunakan counter yang didefinisikan di file lain
void incrementCounter() {
counter++; // Memperbarui nilai counter
}
3. Penggunaan extern
di File Header
Pada proyek berskala besar, akan merepotkan jika harus mendeklarasikan variabel atau fungsi berulang kali. Di sinilah file header menjadi sangat berguna. File header adalah file yang mengumpulkan informasi yang akan dibagikan ke file lain. Dengan mendeklarasikan extern
di file header, file lain dapat merujuk variabel global atau fungsi yang sama.
File header bisa disebut sebagai “kotak peralatan” untuk seluruh proyek. Anda mengumpulkan alat-alat umum di satu tempat, lalu menggunakannya di file yang membutuhkannya.
Contoh File Header
// 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("%d\n", global_variable);
}

4. Kesalahan Umum Penggunaan extern
Ada beberapa hal yang perlu diperhatikan saat menggunakan extern
. Misalnya, Anda tidak boleh menginisialisasi variabel pada deklarasi extern
. extern
hanya untuk “deklarasi”, bukan “definisi”. Jika Anda mendeklarasikan extern
di file yang tidak memiliki definisi variabelnya, akan terjadi error pada proses linking.
Kesalahan Umum
extern int data = 100; // Inisialisasi seperti ini TIDAK BOLEH
Jika Anda mencoba menginisialisasi variabel bersamaan dengan extern
seperti di atas, akan terjadi error. extern
digunakan untuk merujuk variabel yang sudah didefinisikan di file lain, bukan untuk mendefinisikan atau menginisialisasi variabel.
5. Contoh Penggunaan Praktis extern
extern
sangat berguna pada proyek besar. Misalnya, pada program yang terdiri dari banyak modul, data atau fungsi bersama bisa dideklarasikan dengan extern
dan digunakan kembali di setiap file.
Dalam proyek semacam ini, penggunaan extern
akan memudahkan modularisasi program, serta meningkatkan maintainability dan keterbacaan. Setiap file dapat berfungsi secara independen sambil tetap dapat berbagi data yang diperlukan.
Contoh Praktis
// main.c
#include "globals.h"
int main() {
printGlobalVariable(); // Memanggil fungsi yang didefinisikan di file lain
return 0;
}
// globals.c
#include "globals.h"
int global_variable = 100;
void printGlobalVariable() {
printf("%d\n", global_variable); // Output variabel global
}
Artikel ini mencakup mulai dari dasar hingga penggunaan praktis extern
. Memahami peran extern
sebagai kata kunci penting dalam membagi dan menggunakan ulang program C sangatlah penting.