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.
Tantangan
MudahMari 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 untukgreet. Kali ini, bungkus seluruh isinya dengan include guard menggunakan simbolGREET_H.main.c: File utama yang menyertakan file header, mengimplementasikan fungsigreet, dan memanggilnya darimain().
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
#endifKamu 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;
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar Pemrograman Modular
file headerProteksi includefile sumberFungsi StatisRingkasan: Kalkulator Modular4Enkapsulasi
Konsep Opaque PointerMendefinisikan Opaque StructGetter dan SetterValidasi pada SetterUlasan: Kotak Rahasia2Object dan method
Struct sebagai objectPointer 'self'Konsistensi constPointer vs nilaiMethod pembantuRangkuman: Pengelola Point5Proyek: Akun Bank Sederhana
Penyiapan ProyekImplementasi Akun3Siklus Hidup object
Pola KonstruktorPola DestruktorInisialisasi StackSalinan MendalamRangkuman: Pembungkus string6Pewarisan melalui Komposisi
Penyematan StructAturan Anggota PertamaMengakses Anggota ParentUpcastingRekap: Hierarki Bentuk9Proyek: Penggambar Bentuk
Ringkasan ProyekImplementasi LingkaranImplementasi Persegi PanjangPenggunaan PolimorfismeWadah BentukLatihan sendiri: Compiler C online