#pragma once
ก็เลยไปหาข้อมูลและขอเก็บบันทึกไว้กันลืม
- File "grandparent.h"
#pragma once
struct foo
{
int member;
};
- File "parent.h"
#include "grandparent.h"
- File "child.c"
#include "grandparent.h"
#include "parent.h"
จากตัวอย่างไฟล์ child.c เรียกใช้ parent.h และ grandparent.h แต่ parent.h มีการเรียกใช้ grandparent.h อยู่แล้ว ภาษา C จะแจ้ง error เพราะว่าเป็นเรียกไลบรารี่ซ้ำ ดังนั้น ปกติ เมื่อเขียนไลบรารี่จะต้องมีการกำหนด คำสั่งเป็น
#ifndef GRANDPARENT_H #define GRANDPARENT_H ... contents of grandparent.h #endif
ซึ่งใช้ #ifdef เพื่อตรวจสอบว่า มีการเรียกใช้ grandpatent.h แล้วหรือยัง ถ้ายังก็อนุญาตให้เรียกใช้ ทั้ง 3 คำสั่งนี้สามารถแทนด้วย #pragma once เพียงคำสั่งเดียว
หมายเหตุ ต้องดูคอมไพเลอร์แต่ละตัวด้วยว่ารองรับหรือไม่ ที่แน่ๆ ใช้ได้กับ arduino ครับ