Anda telah menulis fungsi yang berfungsi. Generator rand dan algoritma bubble_sort solid. Sekarang Anda membutuhkannya di tempat lain. Kode copy-paste berantakan. Ini menciptakan bug. Itu membuat pemeliharaan menjadi mimpi buruk.
Solusinya adalah perpustakaan utilitas.
Di C, perpustakaan bukanlah kotak ajaib. Ini adalah dua file spesifik yang bekerja bersama: header (.h ) dan sumber (.c ). Header memberi tahu kompiler apa yang tersedia. File sumber berisi logika sebenarnya.
Inilah cara Anda menyusun pustaka C dasar untuk menjaga kode Anda tetap bersih dan modular.
Mendefinisikan Antarmuka
Setiap fungsi publik memerlukan deklarasi. Ini ada di file header.
Buat file bernama util.h.
Garis-garis itu adalah prototipe fungsi. Kata kunci ekstern itu penting. Ia memberi tahu kompiler: “Fungsi ini ada, tetapi saya belum tahu di mana. Saya akan menemukannya nanti saat menautkan.”
Jika Anda menggunakan kompiler C gaya lama, Anda mungkin perlu menghapus nama parameter dari bubble_sort. Standar modern lebih memilih prototipe lengkap, tetapi kode lama sering kali menghilangkannya.
Menerapkan Logika
Sekarang untuk pekerjaan berat. Buat util.c.
Perhatikan penyertaannya. Anda menggunakan tanda kutip ("util.h" ) sebagai pengganti tanda kurung siku ( ). Tanda kurung sudut dicadangkan untuk perpustakaan sistem yang ditemukan di direktori standar. Kutipan memberitahu kompiler untuk mencari di direktori saat ini.
Ada fitur keamanan halus di sini. Variabel rand_seed didefinisikan dalam file .c tetapi tidak dalam file .h. Ini adalah penyembunyian informasi.
Program yang menyertakan util.h mengetahui tentang rand(). Mereka tidak tahu tentang rand_seed. Mereka tidak dapat mengubah benih secara tidak sengaja. Jika Anda ingin menerapkan ini secara ketat, Anda dapat menambahkan kata kunci statis sebelum int rand_seed. Hal ini membuat variabel hanya terlihat dalam file tunggal ini.
Menggunakan Perpustakaan
Program utama Anda tidak memerlukan implementasi. Itu hanya membutuhkan antarmuka.
Buat main.c.
Manfaatnya langsung terasa. Logika utamanya lebih pendek. Anda tidak mengacaukan kode utama Anda dengan algoritma pengurutan atau generator nomor acak. Anda tinggal menelepon mereka.
Kompilasi dan Menghubungkan
Di sinilah kebanyakan pemula tersandung. Anda tidak dapat mengkompilasi semuanya sekaligus jika Anda ingin file objek terpisah. Anda harus mengkompilasi secara terpisah, lalu menautkan.
Dengan asumsi Anda menggunakan sistem mirip UNIX, inilah alur kerjanya.
Pertama, kompilasi sumber perpustakaan ke dalam file objek.
Bendera -c memberitahu GCC untuk mengkompilasi tetapi tidak membuat tautan. Itu berhenti setelah membuat kode mesin. Bendera -g menambahkan simbol debug, yang berguna jika terjadi kesalahan. Hasilnya adalah util.o. File ini berisi kode mesin yang dikompilasi untuk rand dan bubble_sort. Itu tidak dapat berjalan sendiri karena tidak memiliki fungsi utama.
Selanjutnya, kompilasi program utama Anda.
Ini menghasilkan main.o. Sekali lagi, ini hanyalah kode mesin. Ini belum bisa dieksekusi.
Terakhir, hubungkan keduanya.
Perintah ini mengambil main.o dan util.o dan menggabungkannya menjadi satu executable bernama main.
Jalankan dengan:
Anda akan melihat daftar sepuluh nomor acak, diikuti dengan pemisah tanda hubung, diikuti dengan daftar yang diurutkan.
Mengapa Ini Penting
Anda mungkin bertanya: mengapa repot-repot melakukan langkah ekstra ini? Mengapa tidak menempelkan fungsinya saja ke main.c?
Karena perpustakaan berskala. Seiring berkembangnya proyek Anda, Anda akan memiliki lusinan fungsi utilitas. Menyimpannya dalam file terpisah memungkinkan Anda menggunakannya kembali di berbagai proyek



















