การ Include Header File ซ้ำ
ไฟล์ Header ในภาษา C ประกอบด้วยฟังก์ชันที่กำหนดไว้ล่วงหน้า เช่น printf() และ scanf() อยู่ใน stdio.h
- แต่ละไฟล์ Header มีฟังก์ชันที่แตกต่างกัน เพื่อให้โปรแกรมเข้าใจง่ายขึ้น
- เมื่อ Include ไฟล์ Header เดียวกัน 2 ครั้งในโปรแกรม คอมไพเลอร์จะ ข้าม (ignore) ครั้งที่ 2 เพราะสัญลักษณ์
#(include guard) รับประกันว่าไฟล์ถูก include เพียงครั้งเดียวในกระบวนการคอมไพล์
ตัวอย่างที่ 1: คำนวณค่าเฉลี่ยของ 3 จำนวน
#include <stdio.h>
#include <stdio.h> // ครั้งที่ 2 - ถูกข้ามโดยคอมไพเลอร์
int main() {
int a, b, c, d;
float avg;
printf("Enter values for a,b,c:");
scanf("%d%d%d", &a, &b, &c);
d = a + b + c;
avg = d / 3.0; // ใช้ 3.0 เพื่อให้ได้ทศนิยม
printf("Average avg=%f", avg);
return 0;
}
ผลลัพธ์:
Enter values for a,b,c: 3 3 3
Average avg=3.000000
ตัวอย่างที่ 2: Include หลายไฟล์ซ้ำกัน
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h> // ถูกข้าม
int main() {
int a, b, c;
printf("Enter values for a,b:");
scanf("%d%d", &a, &b);
c = a + b;
printf("sum=%d", c);
return 0;
}
ผลลัพธ์:
Enter values for a,b: 2 4
sum=6
หมายเหตุสำคัญ
แม้คอมไพเลอร์จะจัดการ Include ซ้ำได้ แต่เป็นการปฏิบัติที่ดี (Best Practice) ที่ควรใช้ Include Guard หรือ #pragma once ในไฟล์ Header ของตัวเอง เพื่อป้องกันปัญหาการนิยามซ้ำ (redefinition errors) ในโปรเจคขนาดใหญ่