Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

เกิดอะไรขึ้นถ้า Include Header File ซ้ำ 2 ครั้งในภาษา C?


การ 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) ในโปรเจคขนาดใหญ่