การอ้างอิงที่อยู่ของการ Include Header file

การ Include header file ที่เราสร้างขึ้นมาโดยใช้ #include “file” แต่ว่าหากเราจะอ้างอิงที่อยู่ของ header file ในกรณีที่อยู่คนละ folder นั้นเราสามารถทำได้ โดยแบ่งได้เป็น 2 แบบ

แบบที่ 1 include header file ที่อยู่ใน folder ที่อยู่ใน level มากกว่า (folder ย่อยลึกเข้าไป)
จะใช้เครื่องหมายทับ \ ในการระบุ folder ย่อยๆเข้าไป โดยยึดจุดอ้างอิงจาก file .c ของเรา
สมมติว่าเรามี File ตามที่อยู่นี้
D:\Desktop\helloworld1.c
และ
D:\Desktop\test\helloworld1.h
เราสามารถ Include ได้โดย

#include <stdio.h>
#include "test/helloworld1.h"

int main (void)
{
    printf("%s\n", HELLO);
    return 0;
}

และแบบที่ 2 include header file ที่อยู่ใน folder ที่อยู่คนละ level
จะใช้เครื่องหมาย.จุดจุด .. ในการระบุ folder ที่ต้องออกมา 1 ชั้น โดยยึดจุดอ้างอิงจาก file .c ของเรา เช่นกัน

สมมติว่าเรามี File ตามที่อยู่นี้
D:\Desktop\main\helloworld2.c
และ
D:\Desktop\test\helloworld2.h
เราสามารถ Include ได้โดย

#include <stdio.h>
#include "../test/helloworld2.h"

int main (void)
{
    printf("%s\n", HELLO);
    return 0;
}

และอีกกรณี ก็คือ ต้องอ้างอิงออกไปมากกว่า 1 ชั้น โดย .. จะใช้แทนการอ้างอิงออกจาก folder นั้น 1 ชั้น
D:\Desktop\main\submain\helloworld3.c
และ
D:\Desktop\test\helloworld3.h

#include <stdio.h>
#include "../../test/helloworld3.h"

int main (void)
{
    printf("%s\n", HELLO);
    return 0;
}

หลักการใช้ #include

เราสามารถ แบ่งการ Include ในภาษา C ได้เป็น 2 แบบ นั้นก็คือ

#include <file>

และ

#include "file"

สังเกตได้ว่าจะแตกต่างกันที่เครื่องหมาย “” และ < >

เราจะใช้ < >

#include <file>

สำหรับการ include ไฟล์ ที่อยู่ใน folder ของ compiler เช่น header files (.h) ที่เป็นมาตรฐาน string.h, stdio.h, math.h หรือ library ที่เป็นมาตรฐานมากับ compiler อยู่แล้ว เหล่านี้เป็นต้น

ส่วน “”

#include "file"

จะเป็นการ include header file ที่ไม่ได้อยู่ใน folder compiler หรือ เป็น header file (.h) ที่เราสร้างขึ้นมาเอง

การใช้ #include ที่ไม่ถูกต้องอาจจะทำให้ compile แล้วเกิด warning หรือ error ก็ได้ขึ้นอยู่กับ compiler แต่ละตัว ดังนั้นควรจะใช้ #include ให้ถูกต้องกันด้วยละ