By Arnon Puitrakul - 19 มิถุนายน 2015
และแล้วก็มาถึงเรื่องสุดท้ายแล้ว แต่เรื่องนี้โดยส่วนตัวผมก็ไม่ค่อยได้ใช้เลยนะ นั่นคือเรื่องของ 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 ล่ะกันครับ สำหรับวันนี้ สวัสดีครับ
AI เข้ามามีบทบาทในการทำงานสำหรับฝั่ง Software Developer ค่อนข้างมาก วันนี้เราจะมาเล่าวิธีการที่ทำให้เราสาารถใช้งาน Feature พวกนี้ได้แบบฟรี ๆ ในเครื่องของเรากันด้วย Visual Studio Code และ Continue กัน...
เมื่อหลายวันก่อน เราไปทำงานแล้วใช้ Terminal แบบปีศาจมาก ๆ จนเพื่อนถามว่า เราทำยังไงถึงสามารถสลับ Terminal Session ไปมาได้แบบบ้าคลั่งขนาดนั้น เบื้องหลังของผมน่ะเหรอกัปตัน ผมใช้ tmux ยังไงละ วันนี้เราจะมาแชร์ให้อ่านกันว่า มันเอามาใช้งานจริงได้อย่างไร เป็น Beginner Guide สำหรับคนที่อยากลองละกัน...
Firewall ถือว่าเป็นเครื่องมือในการป้องกันภัยขั้นพื้นฐานที่ปัจจุบันใคร ๆ ก็ติดตั้งใช้งานกันอยู่แล้ว แต่หากเรากำลังใช้ Ubuntu อยู่ จริง ๆ แล้วเขามี Firewall มาให้เราใช้งานได้เลยนะ มันชื่อว่า UFW วันนี้เราจะมาทำความรู้จัก และทดลองตั้ง Rule สำหรับการดักจับการเชื่อมต่อที่ไม่เกี่ยวข้องกันดีกว่า...
Obsidian เป็นโปรแกรมสำหรับการจด Note ที่เรียกว่า สารพัดประโยชน์มาก ๆ เราสามารถเอามาทำอะไรได้เยอะมาก ๆ หนึ่งในสิ่งที่เราเอามาทำคือ นำมาใช้เป็นระบบสำหรับการจัดการ Todo List ในแต่ละวันของเรา ทำอะไรบ้าง วันนี้เราจะมาเล่าให้อ่านกันว่า เราจัดการะบบอย่างไร...