Lompat ke konten Lompat ke sidebar Lompat ke footer

Fungsi Nested Bahasa C Kompilator dan GCC

Proses pendefinisian sebuah fungsi dapat dilakukan juga di dalam sebuah fungsi lainnya yang dikenal dengan istilah "nested function". Namun, pada kenyataannya, fungsi bersarang tersebut bukanlah sebuah fungsi yang benar-benar memiliki 'sarang', melainkan bentuk perlakukan fungsi pada scope lexical. Scope lexical merupakan sesuatu yang bernilai tidak valid pada bahasa C, karena kompilator tidak dapat menjangkau atau menemukan lokasi memori yang tepat dari fungsi inner.


Sebelum memahami lebih dalam materi tentang Fungsi Nested Bahasa C Kompilator dan GCC, terlebih dahulu pelajari materi tentang: Fungsi Callbacks Bahasa C, Identifier __func__ Bahasa C dan Predefinisinya, dan Fungsi exit() vs Fungsi _Exit() Bahasa C.

Nested function tidak didukung penggunannya pada bahasa C karena tidak dapat mendefinisikan sebuah fungsi dengan menggunakan fungsi lainnya dalam bahasa C. Proses deklarasi fungsi nested dapat didlakukan pada sebuah fungsi bahasa C, tetapi hal tersebut bukan bentuk aplikasi dari fungsi nested, karena definisi fungsi nested tidak dapat mengakses variabel lokal dari blok sekitarnya, dimana fungsi nested tersebut hanya dapat mengakses variabel global dari modul yang dikandung didalamnya. Ini dilakukan agar pencarian variabel global tidak harus melalui direktori, seperti pada Bahasa C, jika terdapat dua cakupan nested berupa scope lokal dan global yang lebih dari itu, secara built-in. Oleh karena itu, fungsi nested hanya memiliki penggunaan terbatas. Jika user mencoba mengakses fungsi bersarang pada Bahasa C, maka akan mendapatkan kesalahan waktu kompilasi ketika program dijalankan.

Baca Juga:

Contoh:

// Program Bahasa C untuk

// ilustrasi konsep fungsi

// bersarang.

#include <stdio.h>


int main(void)

{

printf("Main");


int fun()

{

printf("fun");


// Pendefinisian fungsi view()

// di dalam fungsi fun().

int view()

{

printf("view");

}


return 1;

}

view();

}

Output:
Compile time error: undefined reference to `view'

Ekstensi dari kompilator GNU Bahasa C memungkinkan untuk melakukan deklarasi dari fungsi nested, dimana deklarasi dari fungsi nested tersebut berada dibawah ekstensi GCC yang harus diawati dengan keyword auto.

Contoh:

// Program bahasa C dari

// fungsi nested dengan

// bantuan ekstensi gcc.

#include <stdio.h>


int main(void)

{

// Deklarasi fungsi dengan

// keyword auto.

auto int view();


// Memanggil fungsi. 

view(); 


printf("Main\n");


int view()

{

printf("View\n");

return 1;

}


printf("MAKAN");


return 0;

}

Output:
view
Main
MAKAN

5 komentar untuk "Fungsi Nested Bahasa C Kompilator dan GCC"

  1. Apa yang dimaksud dengan fungsi nested pada Bahasa C?

    BalasHapus
    Balasan
    1. Fungsi nested dapat didefinisikan pada bagian manapun dimana deklarasi variabel tersebut dimungkinkan, yang memungkinkan untuk fungsi nested dalam suatu fungsi yang bersarang.

      Hapus
    2. Fungsi nested pada bahasa C dapat dideklarasikan sebelum fungsi tersebut ditentukan, sebelum menggunakan keyword auto.

      Hapus
    3. Fungsi bersarang merupakan fungsi yang sepenuhnya terkandung dalam fungsi induk, dimana dalam fungsi apapun pada file program dapat menyertakan fungsi lainnya.

      Hapus
    4. Bahasa C Tidak bisa menggunakan nested function karena akan membenahi program ketika mengambil memori.

      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 -