C Language 101 - Preprocessor Directives (EP.11)

และแล้วก็มาถึงเรื่องสุดท้ายแล้ว แต่เรื่องนี้โดยส่วนตัวผมก็ไม่ค่อยได้ใช้เลยนะ นั่นคือเรื่องของ Preprocessor Directives นั่นเอง

Preprocessor Directives คืออะไร ?

Preprocessor Directives เป็นส่วนที่ใช้ประกาศไว้บนสุดของตัวโปรแกรมเรา เพื่อให้ Compiler ทำงานตามที่เรากำหนด ก่อนที่มันจะแปล (Compile) โปรแกรมของเรา ซึ่งแน่นอนว่า เราก็เคยใช้ Preprocessor Directives มาแล้ว ตอนที่เรา #include <stdio.h> เข้ามาในโปรแกรมเรา ลองดูถ้าเราไม่เติมบรรทัดนั้นเข้าไป คำสั่งหลาย ๆ ตัว ถ้าเราไปเรียกมัน เวลา Compile มันจะขึ้น Error ขึ้นมาเพราะว่า ตัวภาษา C มันไม่รู้จักคำสั่งนี้
ทีนี้เราลองมาดูว่า นอกจาก #include แล้วมันจะมีอะไรอีก
มาที่อันแรกกันเลยนั่นคือ #define ตัวนี้มันเอาไว้ประกาศค่า อารมณ์เหมือนเราสร้างตัวแปรขึ้นมาเก็บค่า แต่ค่านี้เราจะมาสามารถที่จะเปลี่ยนในโค๊ตโปรแกรมเราได้ (ค่าคงที่นั่นแหละ)

#define PI = 3.14

อย่างในตัวอย่างเราก็บอกว่า ให้มันสร้างค่าคงที่ชื่อ PI และให้ PI มีค่าเป็น 3.14
Note : เวลาเราตั้งชื่อตัวแปรที่เป็นค่าคงที่ ให้เราตั้งชื่อด้วยตัวหนังสือพิมพ์ใหญ่ทั้งหมดจะอ่านง่ายกว่านะ
ถัดมาคือ #undef จะทำงานตรงข้ามกับ #define นั่นคือ เป็นการลบค่าคงที่ออกไปนั่นเอง

#define PI = 3.14
#undef PI

จากตัวอย่างด้านบน เราจะเห็นกว่า เราใช้ #define เพื่อประกาศค่าคงที่ PI แต่พอมาบรรทัดถัดมา เรามาลบค่า PI ออกมา ทำให้เราไม่สามารถเรียกค่า PI ที่เราตั้งในโปรแกรมได้ ถ้าเรียกปุ๊บ Error ปั๊บเลย
ที่ผ่านมาเราพูดถึงคำสั่งที่ใช้ ประกาศค่า ลบค่าแล้ว อันนี้มาดู เงื่อนไข กันบ้าง
#ifndef แล้วตามด้วยชื่อค่าคงที่ มันจะเข้าไปเช็คว่า ชื่อของค่าคงที่ ที่เราพิมพ์ลงมามันมีจริงมั้ย ถ้าไม่มีมันก็จะทำตามคำสั่งข้างล่างที่เรากำหนดไว้เลย และสุดท้ายอย่าลืมเด็ดขาด มี if แล้วก็ต้องมี #endif ด้วยเสมอ

#ifndef MESSAGE
   #define MESSAGE "Hello World!"
#endif

จากตัวอย่างนี้ เราบอกว่า ถ้า MESSAGE ไม่เคยได้ถูกประกาศไว้ ก็ให้ลงมาประกาศค่าคงที่ ที่ชื่อว่า MESSAGE
if อีกตัวนั่นคือ #ifdef มันจะให้ผลตรงข้ามกับ #ifndef เลยนั่นคือ ถ้าค่าคงที่นั่นมีจริงก็ให้ทำข้างล่างได้เลย เช่น

#ifdef MESSAGE
   #undef MESSAGE
   #define MESSAGE = "Hello World!"
#endif

ลองมาอ่านโค๊ตตัวอย่างกัน ก่อนอื่น เราก็เช็คว่า ในโปรแกรมของเรา เราได้ประกาศค่าคงที่ชื่อ MESSAGE ไว้รึยังผ่านคำสั่ง #ifdef จากนั้น ถ้าเป็นจริง ให้มันลบค่าคงที่ MESSAGE ออก และสร้างค่าคงที่ชื่อ MESSAGE เหมือนเดิมลงไป เหมือนกับเราพยายามที่จะเปลี่ยนค่าของมันนั่นเอง
และนอกจาก #ifndef และ #ifdef ที่ใช้เช็คเงื่อนไขได้แล้ว เรายังสามารถใช้ #if ธรรมดาได้อีกด้วยนะ อันนี้ก็ if ตรง ๆ เลย แต่เราสามารถใช้มันร่วมกับคำสั่ง defined() ได้อีกด้วย เพื่อเอาไว้เช็คว่า ได้มีการประกาศค่าคงที่ ที่เราบอกไว้ในโปรแกรมของเรารึยังได้ด้วย

#if defined(MESSAGE)
   #undef MESSAGE
   #define MESSAGE = "Hello World!"
#endif

จริง ๆ มันจะมีเรื่อง Marco อยู่ด้วย แต่ไม่ขอพูดในที่นี้ล่ะกัน รู้สึกว่าถ้าพิมพ์แล้วเดี๋ยวมันจะยาวมาก ๆ เลยไม่พิมพ์ล่ะกัน สำหรับ Tutorial C Language 101 ก็ขอจบเพียงเท่านี้ล่ะกันครับ ถ้ามีอะไรอยากให้เขียนเพิ่มก็ลอง Comment เข้ามาในโพสของ Blog ล่ะกันครับ สำหรับวันนี้ สวัสดีครับ