หน้าเว็บ

วันศุกร์ที่ 31 สิงหาคม พ.ศ. 2561

#pragma once

วันนี้ไปเจอส่วนหัวของโปรแกรม มีคำสั่งนี้มาก่อนเลย

#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 ครับ

ไม่มีความคิดเห็น: