Apa itu Kompilasi Bersyarat?

Dalam pemrograman komputer, kompilasi bersyarat menggambarkan kemampuan kompiler perangkat lunak atau prosesor kode sumber untuk memasukkan atau mengabaikan perintah atau blok kode tertentu berdasarkan instruksi khusus bahasa yang secara teknis bukan bagian dari spesifikasi bahasa pemrograman inti. Perintah yang digunakan untuk memicu kompilasi bersyarat dalam suatu program sering disebut arahan pra-prosesor, meskipun mereka juga dapat dikenal sebagai arahan kompiler, komentar bersyarat atau definisi bersyarat. Bergantung pada kompiler atau bahasa yang digunakan, arahan bersyarat dapat berupa variabel atau makro yang ditentukan pengguna, atau mereka juga dapat berupa variabel sistem yang ditetapkan oleh kompiler atau sistem operasi. Kompilasi bersyarat sering digunakan untuk mengonfigurasi satu set file kode sumber sehingga dapat dikompilasi di bawah lingkungan atau sistem operasi yang berbeda tanpa harus menukar atau mengubah file sumber.

Definisi bersyarat yang digunakan untuk menguji kompilasi bersyarat dapat bervariasi dari satu bahasa ke bahasa lain, tetapi umumnya adalah makro atau ekspresi meta-data lain di luar cakupan variabel program normal. Dalam bahasa seperti C, variabel biasanya adalah makro yang dibaca oleh pra-prosesor. Sebagian besar waktu, makro tidak dapat diakses oleh kode sumber program yang sebenarnya dapat dieksekusi, meskipun mereka ada di file sumber yang sama.

Arahan yang digunakan untuk menguji variabel kondisional yang ditentukan adalah dasar dan mengikuti logika yang sama dengan pernyataan if-then. Tes dasar yang dapat dilakukan untuk kompilasi bersyarat adalah apakah suatu nilai terdefinisi, tidak terdefinisi atau, dalam beberapa kasus, apakah dua variabel terdefinisi adalah ekuivalen. Variabel atau makro itu sendiri umumnya tidak memiliki nilai signifikansi apa pun, karena tindakan mendefinisikannya adalah apa yang diperiksa oleh arahan. Namun, dengan beberapa bahasa dan kompiler, nilai variabel yang ditentukan dapat menjadi masalah jika dievaluasi untuk status Boolean.

Ketika kompiler menemukan arahan yang digunakan untuk kompilasi bersyarat, arahan dievaluasi untuk melihat apakah mereka menguji benar atau salah. Jika benar, kode yang mengikuti arahan dikompilasi seperti biasa; jika tidak, kompiler akan melewatkan kode yang ada di bawah arahan sepenuhnya. Ini tidak seperti pernyataan logika bersyarat dalam kode program yang dapat dieksekusi itu sendiri karena, bahkan jika logika memiliki blok kode yang tidak dapat dieksekusi, itu masih akan ditafsirkan dan dikompilasi dalam banyak kasus. Dengan arahan pra-prosesor bersyarat, kode yang dilewati tidak pernah disertakan, ditafsirkan, atau dikompilasi. Juga harus dicatat bahwa setelah pra-prosesor telah mengevaluasi semua variabel dan arahan bersyarat, mereka tidak dikompilasi dengan sisa program, karena mereka dimaksudkan hanya untuk memberikan arahan kepada kompiler.

Kompilasi bersyarat paling sering digunakan untuk memasukkan atau mengecualikan kode yang khusus untuk sistem operasi atau lingkungan tertentu. Ini berarti pustaka yang ada dalam satu sistem operasi dapat dimasukkan secara kondisional jika arahan menentukan program sedang dikompilasi di bawah sistem operasi itu. Sebagai alternatif, arahan juga dapat digunakan untuk memasukkan atau mengecualikan kode berdasarkan variabel yang ditentukan pengguna. Ini dapat dilakukan agar debugging atau kode pembuatan profil tidak disertakan dalam versi final suatu program, atau agar fitur tertentu dapat diaktifkan atau dinonaktifkan tanpa harus menyimpan salinan kode yang terpisah.