การใช้ <xx> และ "xx" ใน #include มีความแตกต่างกัน และมีความหมายที่ต่างกันในการบอกให้คอมไพเลอร์ค้นหาไฟล์ header
1. #include <xx> (Angle Brackets – วงเล็บปีกกา):
- ความหมาย: ใช้สำหรับไฟล์ header ที่เป็นส่วนหนึ่งของ standard library ของภาษา C++ หรือ library ที่ติดตั้งไว้ใน system include paths ของคอมไพเลอร์
- การค้นหา: คอมไพเลอร์จะค้นหาไฟล์ header ใน directories ที่ถูกกำหนดไว้เป็น standard include paths ตัวอย่างเช่น บน Linux มักจะเป็น
/usr/includeหรือ/usr/local/includeหรือ directories ที่ compiler toolchain กำหนดไว้ - ตัวอย่าง:
#include <iostream>,#include <vector>,#include <WiFi.h>(ในกรณีที่ WiFi library ถูกติดตั้งใน system include paths) - โดยทั่วไป: ใช้สำหรับ header files ที่มาพร้อมกับคอมไพเลอร์, libraries ที่ติดตั้งผ่าน package manager (เช่น apt, yum, brew), หรือ libraries ที่ถูกกำหนดให้เป็น system-wide
2. #include "xx" (Double Quotes – เครื่องหมายคำพูดคู่):
- ความหมาย: ใช้สำหรับไฟล์ header ที่เป็นส่วนหนึ่งของ project ของคุณเอง หรือ libraries ที่อยู่ใน project directory หรือ directories ที่เกี่ยวข้องกับ project
- การค้นหา: คอมไพเลอร์จะเริ่มต้นค้นหาไฟล์ header ใน directory เดียวกับไฟล์ source code ที่กำลังคอมไพล์อยู่ก่อน จากนั้นถ้าไม่พบ ก็จะค้นหาใน directories อื่นๆ ที่ถูกกำหนดไว้ใน project settings (เช่น include paths ใน IDE หรือ Makefile)
- ตัวอย่าง:
#include "CREDENTIALS.H",#include "my_header.h" - โดยทั่วไป: ใช้สำหรับ header files ที่คุณสร้างขึ้นเอง, header files ที่อยู่ใน subdirectory ของ project, หรือ header files ของ libraries ที่ถูกนำมาใส่ไว้ใน project โดยตรง
สรุปความแตกต่าง:
| คุณสมบัติ | #include <xx> | #include "xx" |
|---|---|---|
| ความหมาย | Standard library/system library | Project-specific library/header |
| การค้นหา | System include paths | Project directory, then system paths |
| การใช้งานหลัก | Standard headers, system libraries | Project headers, local libraries |
ในกรณีของโค้ด:
#include <WiFi.h>: หมายความว่าWiFi.hควรเป็นส่วนหนึ่งของ Arduino core หรือ library ที่ถูกติดตั้งไว้ใน Arduino IDE หรือ system include paths#include "CREDENTIALS.H": หมายความว่าCREDENTIALS.Hเป็นไฟล์ header ที่คุณสร้างขึ้นเองและอยู่ใน project directory ของคุณ
คำแนะนำ:
- ถ้าคุณกำลังใช้ header file ที่มาพร้อมกับคอมไพเลอร์หรือ library ที่ติดตั้งไว้ ให้ใช้
<xx> - ถ้าคุณกำลังใช้ header file ที่คุณสร้างขึ้นเองหรือเป็นส่วนหนึ่งของ project ของคุณ ให้ใช้
"xx"
การใช้ #include อย่างถูกต้องจะช่วยให้คอมไพเลอร์ค้นหาไฟล์ header ได้อย่างถูกต้องและหลีกเลี่ยงข้อผิดพลาดในการคอมไพล์ครับ