Pada artikel ini akan dibahas materi tentang
identifier __func__ pada Bahasa C beserta identifiernya.
 |
Identifier __func__ Bahasa C
|
Sebelum memahami lebih dalam materi tentang Identifier __func__ Bahasa C dan Predefinisinya, terlebih dahulu pelajari materi tentang:
Fungsi exit() vs Fungsi _Exit() Bahasa C [klik],
Fungsi _Noreturn Specifier Bahasa C Beserta Penjelasannya [klik], dan
Pemanggilan Fungsi Sebelum Deklarasi pada Bahasa C [klik].
Contoh: Perhatikan contoh program berikut.
#include <stdio.h>
int main()
{
printf("%s",__func__);
return 0;
}
Pada contoh sebelumnya, diperkirakan program akan menghasilkan kompilasi
error karena tidak medefinisikan variabel __func__. Namun, setelah dilakukan kompilasi program, ternyata program dapat berjalan dengan baik tanpa memunculkan pesan
error apapun.
Baca Juga:
Penjelasan: Pada Standar Bahasa C C99 dan C11, proses pendefinisian
identifier adalah mengikuti aturan sebagai berikut:
"Identifier __func__ secara implisit harus dideklarasikan oleh translator secepatnya, yang diikuti dengan tanda kurung buka untuk setiap definisi fungsi, ketika muncul
static const char __func__[] = "function-name";, dimana nama funsi adalah nama dari fungsi
lexically-enclosing itu sendiri."
Hal ini berarti bahwa kompilator Bahasa C secara implisit akan menambahkan __func__ pada setiap fungsi pada bahasa C, sehingga identifier tersebut dapat digunakan pada fungsi untuk mendapatkan nama fungsi yang sedang digunakan. Untuk lebih memahani, perhatikan kode program berikut ini:
Contoh:#include <stdio.h>
void foo(void)
{
printf("%s",__func__);
}
void bar(void)
{
printf("%s",__func__);
}
int main()
{
foo();
bar();
return 0;
}
Hasil dari kompilasi program akan memberikan nilai
output sebagai nilai
foobar. Kasus penggunaan pengidentifikasi yang telah ditentukan sebelumnya ini dapat digunakan untuk mencatat nilai
output dari program besar dimana seorang
programmer dapat menggunakan __func__ untuk mendapatkan fungsi saat ini, ketimbang harus menyebutkan nama fungsi lengkap secara eksplisit. Sekarang apa yang terjadi jika kita mendefinisikan satu variabel lagi dengan nama __func__.
Contoh:#include <stdio.h>
int __func__ = 10;
int main()
{
printf("%d",__func__);
return 0;
}
Karena Standar C menganggag bahwa
identifier __func__ dideklarasikan secara implisit sebagai nama fungsi, maka
identifier __func__ tidak perlu lagi didefinisikan untuk setiap kode program. Juga, ada kemungkinan terjadi
error pada penggunaan Standar C yang memunculkan pesan "
undefined behavior" jika
identifier tersebut didefinisikan secara eksplisit.
Contoh:#include <stdio.h>
int main()
{
printf("In file:%s, function:%s() and line:%d",__FILE__,__func__,__LINE__);
return 0;
}
Referensi Tambahan:
Artikel ini didedikasikan kepada: Faza Ulfiana, Junistia Eka Nursetiawati, Kurniawan Dwi Saputra, Maimuna, dan Miftah Santalia.
Apa yang dimaksud dengan identifier __func__ pada Bahasa C?
BalasHapusIdentifier __func__ bahasa C merupakan identifier alat pengidentifikasi yang dibuat oleh kompilator yang dibuat untuk mengidentifikasi fungsi menggunakan nama fungsi.
HapusApa fungsi dari identifier __func__ Bahasa C?
BalasHapusSecara implisit identifier __func__ Bahasa C digunakan pada fungsi untuk mendapatkan nama suatu fungsi.
HapusApa yang dimaksud dengan identifier pada bahasa C?
BalasHapusIndentifier merupakan nama yang diberikan untuk variabel, tipe, fungsi, dan label dalam suatu program. Nama identifier harus berbeda dalam ejaan dan huruf kapitalisasi dari kata kunci apapun.
Hapus