[ HTML ] [ Java ] [ Bahasa C ]


Senin, Mei 03, 2021

Typedef vs #define pada Bahasa C

Artikel ini akan menjelaskan perbedaan dan fungsi dari typedef dan #define pada bahasa pemrograman C, yang akan dijelaskan sebagai berikut:

typedef: digunakan untuk memberikan sebuah nama baru pada tipe data pada bahasa C. Contoh;

// Program bahasa C untuk

// mendemonstrasikan typedef. 

#include <stdio.h> 

 

// Setelah baris ini BYTE

// dapat digunakan sebagai

// pengganti unsigned char. 

typedef unsigned char BYTE

 

int main() 

BYTE b1, b2; 

b1 = 'c'

printf("%c ", b1); 

 

return 0

}

Output:
c

#define pada bahasa C adalah sebuah direktif yang digunakan untuk memberikan nama alias pada program.

// Program bahasa C untuk

// mendemonstrasikan #define. 

#include <stdio.h> 

 

// Setelah baris ini, HYD

// diganti dengan "Hyderabad" 

#define HYD "Hyderabad" 

 

int main() 

printf("%s ", HYD); 

 

return 0

}

Output:
Hyderabad

Perbedaan antara typedef dan #define:
satu, typedef dibatasi untuk memberikan nama simbolis untuk tipe data saja, sedangkan #define digunakan untuk mendefinisikan alias dari nilai, #define dapat digunakan untuk mendefinisikan 1 sebagai ONE, atau 3,14 sebagai PI, dan lain sebagainya.

dua, interpretasi typedef ditunjukkan oleh kompilator, sedangkan statement #define ditampilkan oleh preprosesor.

tiga, "#" tidak bisa diakhiri dengan semocolon, sedangkan typedef harus diakhiri dengan semicolon.

empat, #define hanya melakukan copy-paste nilai definisi pada titik yang digunakan, sedangkan typedef merupakan definisi aktual itu sendiri dari sebuah tipe yang baru.

lima, typedef mengikuti aturan scope yang artinya jika tipe baru didefinisikan dalam sebuah scope (dalam fungsi), maka tipe data baru hanya akan terlihat sampai batas scope itu sendiri. Sedangkan #define, ketika preprosesor menemukan #define, maka semua tindakannya akan digantikan setelahnya (tidak mengikuti aturan scope).

// Program C untuk menunjukkan

// pentingnya typedef atas

// #define untuk tipe data. 

#include <stdio.h> 

typedef char* ptr

#define PTR char

 

int main() 

ptr a, b, c; 

PTR x, y, z; 

 

printf("sizeof a:%zu\n" ,sizeof(a) ); 

printf("sizeof b:%zu\n" ,sizeof(b) ); 

printf("sizeof c:%zu\n" ,sizeof(c) ); 

printf("sizeof x:%zu\n" ,sizeof(x) ); 

printf("sizeof y:%zu\n" ,sizeof(y) ); 

printf("sizeof z:%zu\n" ,sizeof(z) ); 

 

return 0

}

Output:
sizeof a:8
sizeof b:8
sizeof c:8
sizeof x:8
sizeof y:1
sizeof z:1

Dari output tersebut nilai "a" merupakan nilai pointer 8. 

typedef char* ptr;
ptr a, b, c;

Dengan statementnya secara efektif menjadi:

char *a, *b, *c;

a, b, c, dideklarasikan sebagai char*. 

Kenyatannya, #define beroperasi sebagai berikut:
#define PTR char*
PTR x, y, z;

statement secara efektif menjadi;

char *x, y, z;

Hal ini membuat x, y, dan z menjadi berbeda, dimana x adalah pointer ke char, sementara y dan z adalah variabel char. Ketika dideklarasikan makro dengan pointer, jika yang dideklarasikan lebih dari satu identifier, maka definisi aktual akan diberikan untuk identifier pertama, dan sisanya adalah definisi non pointer yang diberikan. Pada kasus sebelumnya, x akan dideklarasikan sebagai char*, sehingga ukurannya adalah seukuran pointer, dimana y dan z akan dideklarasikan sebagai char, maka ukurannya pun akan seukuran 1 byte data.

7 komentar:

  1. Apa yang dimaksud dengan typedef pada bahasa pemrograman C?

    BalasHapus
    Balasan
    1. typedef adalah keyword yang terdapat dalam bahasa pemrograman C dan C++. Keyword typedef digunakan untuk tambahan (alias) untuk tipe data lainnya, tetapi tidak membuat tipe data baru, kecuali dalam kasus tidak jelas dari typedef yang memenuhi syarat dari tipe array dimana kualifikasi typedef akan ditransfer ke tipe elemen array.

      Hapus
  2. Apa yang dimaksud dengan #define pada bahasa Pemrograman C pada artikel ini?

    BalasHapus
    Balasan
    1. Pada bahasa pemrograman C, perintah #define memungkinkan untuk definisi makro dalam kode sumber program yang dibuat oleh programmer. Definisi makro ini memungkinkan nilai konstanta dideklarasikan untuk digunakan pada seluruh kode program. Direktif ini biasa digunakan saat membuat konstanta yang mewakili sebuah nilai atau angka, string, atapun ekspresi.

      Hapus
  3. Direktif #define menyebabkan kompilator mengganti token-string untuk setiap kemunculan identifier dalam kode sumber file. Identifier tetap ditentukan dan dapat diuji dengan menggunakan #if dan #ifdef.

    BalasHapus

Respon komentar 7 x 24 jam, so please be patient :D