Lompat ke konten Lompat ke sidebar Lompat ke footer

Identifier __func__ Bahasa C dan Predefinisinya

Pada artikel ini akan dibahas materi tentang identifier __func__ pada Bahasa C beserta identifiernya.


Identifier __func__ Bahasa C dan Predefinisinya
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.

6 komentar untuk "Identifier __func__ Bahasa C dan Predefinisinya"

  1. Apa yang dimaksud dengan identifier __func__ pada Bahasa C?

    BalasHapus
    Balasan
    1. Identifier __func__ bahasa C merupakan identifier alat pengidentifikasi yang dibuat oleh kompilator yang dibuat untuk mengidentifikasi fungsi menggunakan nama fungsi.

      Hapus
  2. Apa fungsi dari identifier __func__ Bahasa C?

    BalasHapus
    Balasan
    1. Secara implisit identifier __func__ Bahasa C digunakan pada fungsi untuk mendapatkan nama suatu fungsi.

      Hapus
  3. Apa yang dimaksud dengan identifier pada bahasa C?

    BalasHapus
    Balasan
    1. Indentifier 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

Hubungi admin melalui Wa : +62-896-2414-6106

Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.

Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.

- Ikatlah Ilmu dengan Memostingkannya -
- Big things start from small things -