Makro dan Preprocessor Bahasa C Beserta Fungsinya
/* Macros dan preprocessor pada bahasa C */
/* Menggunakan define untuk konstanta */
#include<stdio.h>
#define max 100
int main()
{
printf("nilai maksimum adalah %d", max);
return 0;
}
/* Macros dan preprocessor pada bahasa C */
/* Menggunakan macros INCREMENT (X) */
#include <stdio.h>
#define INCREMENT(x) ++x
int main()
{
char *ptr = "Jumanji";
int x = 10;
printf("%s ", INCREMENT(ptr));
printf("%d", INCREMENT(x));
return 0;
}
empat, Argument makro tidak dievaluasi sebelum makro ekspansi. Contohnya, perhatikan program berikut ini.
/*Macros dan preprocessor pada bahasa C*/
#include <stdio.h>
#define MULTIPLY(a, b) a*b
int main()
{
// Macros diekspansi sebagai
// 2 + 3 * 3 + 5, namun tidak sebagai 5*8
printf("%d", MULTIPLY(2+3, 3+5));
return 0;
}
Baca Juga:
/* Macros dan preprocessor pada bahasa C */
#include <stdio.h>
//kode program tidak ditulis a*a melainkan (a)*(b)
#define MULTIPLY(a, b) (a)*(b)
int main()
{
// macros diperluas sebagai berikut
// (2 + 3) * (3 + 5), dan dibaca sebagai 5*8
printf("%d", MULTIPLY(2+3, 3+5));
return 0;
}
/* Macros dan Preprocessor pada bahasa C */
/* Menggunakan operator token pasting ## */
#include <stdio.h>
#define merge(a, b) a##b
int main()
{
printf("%d ", merge(12, 34));
}
enam, Sebuah token yang dilewatkan menuju makro dapat dikonversi menjadi sebuah string literal dengan menggunakan #.
/* Macros dan preprocessor pada bahasa C */
/* Stirng literal menggunakan operator # */
#include <stdio.h>
#define get(a) #a
int main()
{
// Jumanji is changed to "Jumanji"
printf("%s", get(Jumanji));
}
tujuh, Makro dapat dideklarasikan pada baris ganda dengan menggunakan tanda '\'. Baris terakhir tidak memerlukan tanda '\'.
#include <stdio.h>
#define PRINT(i, limit) while (i < limit) \
{ \
printf("Jumanji "); \
i++; \
}
int main()
{
int i = 0;
PRINT(i, 3);
return 0;
}
/* Macros dan preprocessor pada bahasa C */
#include <stdio.h>
#define square(x) x*x
int main()
{
// Expanded as 36/6*6
int x = 36/square(6);
printf("%d", x);
return 0;
}
Jika menggunakan fungsi inline, maka didapatkan ekspektasi dari output. Serta, program yang terdapat pada baris 4 dan seterusnya akan dikoreksi menggunakan fungsi inline.
/* Macros dan preprocessor pada bahasa C */
#include <stdio.h>
static inline int square(int x) { return x*x; }
int main()
{
int x = 36/square(6);
printf("%d", x);
return 0;
}
sembilan, Preprocessor juga mendukung if-else direktif yang pada dasarnya digunakan untuk kompilasi kondisional.
/* Macros dan Preprocessor pada bahasa C */
int main()
{
#if VERBOSE >= 2
printf("Trace Message");
#endif
}
sepuluh, Sebuah file header mungkin memiliki lebih dari satu kondisi langsung ataupun tidak langsung yang mengarahkan kepada deklarasi permasalahan dari variabel atau fungsi yang sama. Untuk menghindari permasalahan ini, direktif seperti defined, ifdef, dan ifndef digunakan.
sebelas, Terdapat beberapa standarisasi makro yang dapat digunakan untuk mencetak program file (_FILE_), Kompilasi tanggal (_DATE_), Kompilasi tanggal (_TIME_), dan baris angka (_LINE_).
/* Macros dan Preprocessor pada bahasa C */
#include <stdio.h>
int main()
{
printf("File saat ini :%s\n", __FILE__ );
printf("Tanggal saat ini :%s\n", __DATE__ );
printf("Waktu saat ini :%s\n", __TIME__ );
printf("Baris angka :%d\n", __LINE__ );
return 0;
}
Tanggal saat ini :Sep 4 2019
Waktu saat ini :10:17:43
Baris angka :9
duaBelas, Dapat dilakukan penghapusan makro yang telah didefinisikan:
#undef MACRO_NAME.
/* macros dan preprocessor pada bahasa C */
#include <stdio.h>
#define LIMIT 100
int main()
{
printf("%d",LIMIT);
//menghilangkan definisi macro LIMIT
#undef LIMIT
//baris selanjutnya akan menyebabkan
// error karena LIMIT tidak terdefinisi
printf("%d",LIMIT);
return 0;
}
/* Macros dan preprocessor pada bahasa C */
/* Penghapusan Macros */
#include <stdio.h>
#define LIMIT 1000
int main()
{
printf("%d",LIMIT);
//Menghapus macros LIMIT
#undef LIMIT
//Mendeklarasikan LIMIT kembali sebagai nilai integer
int LIMIT=1001;
printf("\n%d",LIMIT);
return 0;
}
1001
Fakta menarik lainnya seputar makro dengan menggunakan #undef.
/* Macros dan preprocessor pada bahasa C */
/* Macros menggunakan undef*/
#include <stdio.h>
//fungsi prototype div
float div(float, float);
#define div(x, y) x/y
int main()
{
// menggunakan macros div
// Note: %0.2f untuk mengambil
// nilai dua desimal setelah tanda titik
printf("%0.2f",div(10.0,5.0));
// menghapus macros div
#undef div
// function div dipanggil kembali
// sebagai definisi macros yang telah dihapus
printf("\n%0.2f",div(10.0,5.0));
return 0;
}
//pendefinisian fungsi div
float div(float x, float y){
return y/x;
}
0.50
6 komentar untuk "Makro dan Preprocessor Bahasa C Beserta Fungsinya"
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 -
Macros merupakan fragmen kode yang telah diberi nama pada bahasa pemrogram (bahasa C). Macros mirip dengan objek yang menyerupai objek data lainnya saat sedang digunakan pada program, macros juga dapat menyerupai fungsi pemanggilan ketika sedang digunakan pada program.
BalasHapusUser dapat menentukan apakah define yang bersifat valid dapat digunakan sebagai macros atau tidak, meskipun keyword yang digunakan pada define tersebut adalah bagian dari keyword bahasa C itu sendiri. Preprosesor tidak mengetahui apapun tetang penggunaan keyword pada saat define tersebut.
Preprosessor pada bahasa C adalah suatu prosesor macros yang digunakan secara otomatis oleh kompilator bahasa C untuk mengubah program sebelum kompilasi program dijalankan. Disebut preprosesor macros karena memungkinkan programmer untuk menentukkan macros pada program yang dibuatnya, baik itu yang merupakan singkatan ataupun bentuk konstruksi lain yang lbeih panjang.
BalasHapusSecara sederhana apa yang dimaksud dengan makro dan kenapa bahasa c menggunakan makro?
BalasHapusMakro adalah segala sesuaty yang sama seperti halnya makro pada dunia pemrograman: Dimana fungsi macros itu sendiri adalah untuk melakukan penyederhanaan atau penyingkatan secara otomatis terhadap suatu keyword yang lebih panjang dan rumit. Salah satu alasan kenapa macros digunakan pada bahasa pemrograman C adalah untuk peningkatan kinerja dalam pembuatan program.
HapusApa yang dimaksud dengan preprosesor bahasa C?
BalasHapusProprosesor baahsa C adalah preprosesor macros untuk bahasa pemrograman komputer C, Objective-C, dan C++. Preprosesor tersebut menyediakan kemampuan untuk memasukkan file header, perluasan macros, kompilasi bersyarat, kontrol baris.
Hapus