Minggu, 12 Juni 2011

typedef

Di dunia pemrograman C++, penggunaan perintah ini terbilang sederhana dan sekilas terlihat tidak penting. Namun ternyata, khususnya bagi beberapa orang, penggunaan dan pemahaman tentang typedef ini cukup membingungkan.

Banyak tutorial yang mengatakan bahwa penggunaan typedef adalah untuk memberikan sinonim dari suatu tipe data. Namun, jujur saja secara pribadi, saya tidak sepenuhnya setuju dengan pendapat tersebut. Misal terdapat pernyataan berikut:

typedef int bilBulat;

bilBulat nBilangan;

Pada contoh diatas, anggapan bahwa bilBulat merupakan sinonim dari int, sehingga pernyataan kedua (bilBulat nBilangan) berarti int nBilangan, memang bisa dianggap benar. Namun sesungguhnya yang terjadi pada pernyataan diatas adalah bilBulat bukan merupakan nama lain dari int. bilBulat hanya berfungsi menjadi sesuatu yang diganti dengan nama aktual variabel yang akan dideklarasikan.

Jadi ketika kita mendeklarasikan bilBulat nBilangan, maka deklarasi yang sebenarnya (yang compiler akan lakukan adalah: “Buang typedef, lalu ganti bilBulat dengan nBilangan sehingga pernyataannya menjadi seperti ini:

int nBilangan;

Oke, mungkin terlihat cukup membingungkan. Perhatikan saja pernyataan berikut.

typedef int Tumpukan[10];

Apabila terdapat pernyataan

Tumpukan nArray;

Maka Anda tinggal pikirkan saja “Buang typedef, lalu ganti Tumpukan dengan nArray.” Sehingga pernyataan yang sebenarnya adalah seperti berikut.

int nArray[10];

Jadi yang sebenarnya dilakukan oleh typedef adalah hampir sama dengan preprocessor #define hanya saja perintah typedef lebih fleksibel untuk digunakan.

Misal terdapat pernyataan berikut:

typedef int (*callBack)(char *); // Biasa digunakan untuk function pointer

Maka pernyataan berikut:

callBack pFunc1;

callBack pFunc2;

callBack pFunc3;

Memiliki arti:

int (*pFunc1)(char *);

int (*pFunc2)(char *);

int (*pFunc3)(char *);

Saya tidak menyatakan bahwa preprocessor #define tidak dapat digunakan untuk melakukan pernyatan-pernyataan tersebut. Hanya saja saya tidak memiliki bayangan bagaimana cara melakukan hal di atas dengan preprocessor #define (bahkan membayangkannya saja sudah membuat saya malas).

Sekian tutorial dari saya, semoga bermanfaat. Jika ada kesalahan, silakan berkomentar sehingga saya bisa memperbaikinya :).

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | belt buckles