Menu
CoddyTech

Proteksi include

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C di Coddy. Pelajaran 2 dari 61.

Ketika file header disertakan beberapa kali dalam sebuah proyek, compiler melihat deklarasi yang sama berulang kali sehingga menyebabkan error. Hal ini biasanya terjadi ketika beberapa file menyertakan header yang sama, atau ketika header saling menyertakan. Include guard mengatasi masalah ini.

Include guard menggunakan tiga direktif preprosesor untuk memastikan isi header diproses hanya sekali:

// math_utils.h
#ifndef MATH_UTILS_H
#define MATH_UTILS_H

int add(int a, int b);

#endif

Begini cara kerjanya: #ifndef MATH_UTILS_H memeriksa apakah simbol MATH_UTILS_H belum didefinisikan. Jika belum, preprosesor melanjutkan dan langsung mendefinisikannya dengan #define MATH_UTILS_H. Semua yang berada di antara titik ini dan #endif disertakan dalam kompilasi.

Saat header ini disertakan untuk kedua kalinya, MATH_UTILS_H sudah didefinisikan, sehingga seluruh blok dilewati. Nama guard biasanya berupa nama file dalam huruf kapital, dengan garis bawah menggantikan titik dan karakter khusus.

Setiap header file yang kamu buat harus memiliki include guard. Ini adalah praktik standar yang mencegah error kompilasi dan membuat kodemu aman untuk disertakan dari mana saja di proyekmu.

challenge icon

Tantangan

Mudah

Mari lindungi file header dari penyertaan ganda dengan menambahkan include guard. Kamu akan melanjutkan utility sapaan dari pelajaran sebelumnya, tetapi kali ini pastikan file header aman disertakan beberapa kali.

Kamu akan membuat dua file:

  • greet.h: File header yang berisi deklarasi fungsi untuk greet. Kali ini, bungkus seluruh isinya dengan include guard menggunakan simbol GREET_H.
  • main.c: File utama yang menyertakan file header, mengimplementasikan fungsi greet, dan memanggilnya dari main().

Fungsi greet harus menerima parameter const char* untuk nama dan mencetak:

Hello, Alice!

File header-mu harus mengikuti struktur ini:

#ifndef GREET_H
#define GREET_H

// function declaration here

#endif

Kamu akan menerima satu input: nama (string).

Cetak pesan sapaan persis seperti yang ditunjukkan pada format di atas, dengan mengganti Alice menggunakan nama yang diberikan.

Coba sendiri

#include <stdio.h>
#include "greet.h"

// TODO: Implementasikan fungsi greet yang mencetak "Hello, <name>!"

int main() {
    char name[100];
    scanf("%s", name);
    
    // TODO: Panggil fungsi greet dengan nama tersebut
    
    return 0;
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler C online