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 BOLEHJika 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.



