Anda di halaman 1dari 12

Macro

BAB 8

TUGAS:TIO WIJAYA

FAKULTAS:KOMPUTER

PRODY:TEHNIK INFORMATIKA
Preprocessor
Directive
Pembuatan
#define
File Header

#ifdef -
#Include
#ifndef

#undef #if - #Endif

#if - #else -
#I elif
#endif
Arahan preprocessor adalah
baris yang termasuk dalam
kode program yang didahului
oleh tanda pagar (). Garis-garis
ini bukan pernyataan program
tetapi arahan
untuk preprocessor.
Preprocessor memeriksa kode
sebelum kompilasi kode yang Meskipun compiler tidak
sebenarnya dimulai dan memiliki preprocessor terpisah,
menyelesaikan semua arahan arahan yang dijelaskan di
ini sebelum kode apa pun bagian ini diproses seolah-olah

A.Preprocessor benar-benar dihasilkan oleh


pernyataan reguler.
ada. Anda menggunakannya
untuk membantu dalam
kompilasi bersyarat. Tidak

Directive
Arahan preprocessor ini hanya seperti direktif C dan C++, Anda
mencakup satu baris kode. tidak dapat menggunakan
Segera setelah karakter baris direktif ini untuk membuat
baru ditemukan, direktif makro. Direktif preprocessor
preprocessor berakhir. Tidak harus menjadi satu-satunya
ada titik koma () yang instruksi pada baris.
diharapkan pada akhir direktif
preprocessor. Satu-satunya cara
direktif preprocessor dapat
diperluas melalui lebih dari satu
baris adalah dengan
mendahului karakter baris baru
di akhir baris dengan garis
miring terbalik ().#;\.
1.#include
Dalam kasus pertama, header ditentukan
antara tanda kurung siku . Ini digunakan
untuk menyertakan header yang disediakan
oleh implementasi, seperti header yang
menyusun pustaka standar (, ,...). Apakah
header benar-benar file atau ada dalam
beberapa bentuk lain adalah implement asi-
didefinisikan, tetapi dalam hal apapun
mereka harus benar disertakan dengan
Direktif ini telah digunakan dengan tekun di arahan ini.
bagian lain dari tutorial ini. Ketika
preprocessor menemukan arahan, ia Sintaks yang digunakan dalam yang kedua
menggantinya dengan seluruh konten menggunakan tanda kutip, dan
header atau file yang ditentukan. Ada dua termasuk file. File dicari dengan cara
cara untuk menggunakan #include#include: yang ditentukan implementasi, yang
umumnya mencakup jalur saat ini. Jika file
tidak ditemukan, kompiler menafsirkan
direktif sebagai penyertaan header, sama
seperti jika tanda kutip () diganti dengan
tanda kurung siku
().<>iostreamstring#include""<>
To mendefinisikan makro preprocessor yang dapat kita gunakan . Sintaksnya
adalah:
Ketika preprocessor menemukan direktif ini, ia menggantikan setiap kejadian
di sisa kode dengan . Ini bisa berupa ekspresi, pernyataan, blok, atau apa
saja. Preprocessor tidak memahami C ++ dengan benar, itu hanya
menggantikan setiap kejadian oleh .#define #define identifier replacement
identifierreplacementreplacementidentifierreplacement
#define TABLE_SIZE 100
int table1[TABLE_SIZE];
int table2[TABLE_SIZE];Setelah preprocessor diganti , kode menjadi setara
dengan:TABLE_SIZE
int table1[100];
int table2[100];

2.#define
#define dapat bekerja juga dengan parameter untuk menentukan makro
fungsi:
#define getmax(a,b) a>b?a:b Ini akan menggantikan setiap kemunculan
diikuti oleh dua argumen dengan ekspresi pengganti, tetapi juga mengganti
setiap argumen dengan pengidentifikasinya, persis seperti yang Anda
harapkan jika itu adalah fungsi:getmax
Direktif #if, dengan arahan #elif, #else, dan #endif, mengontrol kompilasi
bagian-bagian dari file sumber. Jika ekspresi yang Anda tulis (setelah #if)
memiliki nilai bukan nol, grup baris segera setelah direktif #if disimpan
dalam unit terjemahan.

Setiap direktif #if dalam file sumber harus dicocokkan dengan


direktif #endif penutup. Sejumlah arahan #elif dapat muncul di antara

3.#if - #endif arahan #if dan #endif, tetapi paling banyak satu
arahan #else diperbolehkan. Direktif #else, jika ada, harus menjadi
arahan terakhir sebelum #endif.

Semua arahan kompilasi bersyarat, seperti #if dan #ifdef, harus cocok
dengan arahan #endif penutup sebelum akhir file. Jika tidak, pesan galat
dihasilkan. Ketika arahan kompilasi bersyarat terkandung dalam file yang
disertakan, mereka harus memenuhi kondisi yang sama: Tidak boleh ada
arahan kompilasi bersyarat yang tidak cocok di akhir file yang
disertakan.
DIREKTIF #IF, #ELIF, #ELSE,DAN #ENDIF DAPAT
BERSARANG DI BAGIAN TEKS DARI ARAHAN #IF LAINNYA.
SETIAP DIREKTIF #ELSE, #ELIF, ATAU #ENDIF BERSARANG
MILIK DIREKTIF #IF TERDEKAT SEBELUMNYA.
PREPROCESSOR MEMILIH ITEM TEKS TUNGGAL DENGAN
MENGEVALUASI EKSPRESI KONSTAN MENGIKUTI
4.#if - #else - SETIAP #IF ATAU #ELIF DIREKTIF SAMPAI MENEMUKAN
EKSPRESI KONSTAN YANG BENAR (BUKAN NOL). INI MEMILIH
SEMUA TEKS (TERMASUK ARAHAN PREPROCESSOR LAINNYA
#endif YANG DIMULAI DENGAN #) HINGGA #ELIF, #ELSE,
ATAU #ENDIF TERKAIT.
JIKA SEMUA KEMUNCULAN EKSPRESI KONSTANTA ADALAH
FALSE, ATAU JIKA TIDAK ADA ARAHAN #ELIF MUNCUL,
PREPROCESSOR MEMILIH BLOK TEKS SETELAH KLAUSA #ELSE.
KETIKA TIDAK ADA KLAUSA #ELSE, DAN SEMUA
CONTOH EKSPRESI KONSTANTA DI BLOK #IF ADALAH FALSE,
TIDAK ADA BLOK TEKS YANG DIPILIH.
Kata kunci elif adalah cara pythons untuk mengatakan "jika
kondisi sebelumnya tidak benar, maka coba kondisi ini".

#if DLEVEL > 5


#def ine SIG NAL 1
#if STACKUSE == 1
#def ine STACK 200
#else
#def ine STACK 100
#endif
#else
#def ine SIG NAL 0
#if STACKUSE == 1
#def ine STACK 100
#else
#def ine STACK 50
#endif
#endif
#if DLEVEL == 0

5.#I elif
#def ine STACK 0
#elif DLEVEL == 1
#def ine STACK 100
#elif DLEVEL > 5
display( debugptr );
#else
#def ine STACK 200
#endif

Blok #if pertama menunjukkan dua set arahan #if, #else, dan #endif bersarang. Set arahan pertama diproses
hanya jika benar. Jika tidak, pernyataan setelah #else diproses.DLEVEL > 5
Arahan #elif dan #else dalam contoh kedua digunakan untuk membuat satu dari empat pilihan, berdasarkan
nilai . Konstanta diatur ke 0, 100, atau 200, tergantung pada definisi . Jika lebih besar dari 5, maka
pernyataanDLEVELSTACKDLEVELDLEVEL
6.#undef

 Direktif #undef menghapus definisi pengidentifikasi saat  Dalam contoh berikut, direktif #undef menghapus definisi konst
ini. Akibatnya, kemunculan pengidentifikasi berikutnya anta simbolik dan makro. Perhatikan bahwa hanya pengidentifi
diabaikan oleh preprocessor. Untuk menghapus definisi kasi makro yang diberikan.
makro menggunakan #undef, berikan
hanya pengidentifikasi makro, bukan daftar parameter.
#define WIDTH 80 #define
 Anda juga dapat menerapkan direktif #undef ke
pengidentifikasi yang tidak memiliki definisi sebelumnya.
ADD( X, Y ) ((X) + (Y)) . . .
Ini memastikan bahwa pengidentifikasi tidak ditentukan. #undef WIDTH
Penggantian makro tidak dilakukan dalam
pernyataan #undef. #undef ADD
 Direktif #undef biasanya dipasangkan dengan direktif
untuk membuat wilayah dalam program sumber di mana
pengidentifikasi memiliki arti khusus. Misalnya, fungsi Makro dapat dibatalkan definisinya dari baris perintah
tertentu dari program sumber dapat menggunakan
konstanta manifes untuk menentukan nilai spesifik
menggunakan opsi, diikuti oleh nama makro yang tidak
lingkungan yang tidak mempengaruhi sisa program. ditentukan. Efek mengeluarkan perintah ini setara
Direktif #undef juga bekerja dengan direktif untuk dengan urutan pernyataan nama makro di awal
mengontrol kompilasi kondisional dari program sumber. file./U#undef
Untuk informasi selengkapnya, lihat Arahan #if, #elif,
#else, dan #endif.#define#if
END Khusus Microsoft
7.#ifdef - #ifndef

 Anda dapat menggunakan #ifdef dan #ifndef arahan di mana saja dapat digunakan.
Pernyataan pengenal #ifdef setara dengan saat pengidentifikasi telah ditentukan. Ini setara dengan
ketika pengidentifikasi belum ditentukan, atau telah tidak ditentukan oleh direktif #undef. Arahan ini
hanya memeriksa ada atau tidak adanya pengidentifikasi yang didefinisikan dengan , bukan untuk
pengidentifikasi yang dideklarasikan dalam kode sumber C atau C++.#if#if 1#if 0#define
 Arahan ini disediakan hanya untuk kompatibilitas dengan versi bahasa sebelumnya. Ekspresi
konstanta defined( identifier) yang digunakan dengan direktif lebih disukai.#if
 Direktif #ifndef memeriksa kebalikan dari kondisi yang diperiksa oleh #ifdef. Jika pengidentifikasi belum
ditentukan, atau jika definisinya telah dihapus dengan , kondisinya benar (bukan nol). Jika tidak,
kondisinya salah (0).#undef
 Khusus Microsoft
 Pengidentifikasi dapat diteruskan dari baris perintah menggunakan opsi /D. Hingga 30 makro dapat
ditentukan dengan .
 Direktif #ifdef berguna untuk memeriksa apakah suatu definisi ada, karena definisi dapat diteruskan dari
baris perintah. Misalnya:
Untuk membuat file header pada C, Anda dapat membuat file dengan ekstensi .h yang berisi definisi dari fungsi,
variabel, macro, dan konstanta. Pada program-program yang sudah dibuat, kita sering memasukkan header file
stdio.h ke dalam program. File stdio.h adalah header file yang berisi definisi dari fungsi-fungsi untuk standar input
dan output seperti printf(), scanf(), gets(), puts(), dan sebagainya . Header file pada C sebenarnya berperan sebagai

8.Pembuatan
library. Library dalam pemrograman adalah sekumpulan fungsifungsi dan konstanta yang bisa kita pakai kembali.
Header file digunakan untuk membuat program secara modular sehingga program tersebut gampang dikelola dan
dikembangkan . Berikut adalah contoh program dengan header file:
// File: hitung_umur.h

File Header int hitung_umur(int tahun_lahir, int tahun_sekarang);

// File: hitung_umur.c

int hitung_umur(int tahun_lahir, int tahun_sekarang)

{ return tahun_sekarang - tahun_lahir;

// File: main.c

#include <stdio.h>

#include "hitung_umur.h"

void main() {

int tahun_sekarang = 2022;

int tahun_lahir = 1999;

int umur = hitung_umur(tahun_lahir, tahun_sekarang);

printf("Umur kamu %d tahun", umur);

Setelah itu, kita bisa compile semua programnya. Karena di sini ada dua file kode file c, maka kita harus mengcompile
kedua file tersebut. Jika hanya meng-compile main.c saja, maka tidak ak
TERIMA KASIH

Anda mungkin juga menyukai