More Related Content
Similar to งานทำ Blog บทที่ 13 (20)
More from รัสนา สิงหปรีชา (20)
งานทำ Blog บทที่ 13
- 2. Preprocessor Directive หรือที่เรียกกันสั้น ๆ ว่า Directive นั้น
เป็นส่วนของ Source Code ที่จะทางานก่อนคอมไพเลอร์จะทาการ
ประมวลผล (Compiler) โดยคาสั่งประเภท Preprocessor Directive จะ
เริ่มต้นด้วยสัญลักษณ์ (#) เสมอ เช่น #includes, #defind เป็นต้น
#include <stdio.h>
void main(void)
{
printf(“Hello World”);
}
Compiler
Preprocessor
Translator
00100010000111..01100000011
00100010000111..01100000011
- 3. Includes
Includes เป็นการเรียกใช้ Preprocessor Directive ซึ่งจะเรียกใช้
ไฟล์ท่เก็บไว้ในไลบราลี เราสามารถเขียนได้ 2 รูปแบบดังนี้
ี
รูปแบบที่ 1
#includes <filename.h>
ในการทางานของโปรแกรมนั้น คอมไพเลอร์จะค้นหาเฮดเดอร์ไฟล์
filename.h จากไลบราลีของภาษา C เพียงที่เดียวเท่านั้น
รูปแบบที่ 2
#includes filename.h
ในการทางานของโปรแกรมนั้น คอมไพเลอร์จะค้นหาเฮดเดอร์ไฟล์
จากไลบราลีที่เก็บซอร์สโค้ดของเราก่อน ถ้าหากไม่เจอก็จะไปค้นหาที่ไล
บราลีของภาษา C
- 4. Conditional Compilation
Conditional Compilation เป็นกลุ่ม Preprocessor Directive ประเภทหนึ่งในภาษา C ซึ่ง
Preprocessor Directive ประเภทนี้เป็นกลุ่มคาสั่งควบคุมการทางานของโปรแกรมที่ใช้ในการ
ตัดสินใจ ซึ่งได้แก่ คาสั่ง #if, #ifdef และ endif โดยแต่ละคาสั่งมีการทางานดังนี้
Preprocessor Directive
ความหมายและการนาไปใช้งาน
คาสั่ง #if
ใช้ในการตรวจสอบเงื่อนไขในนิพจน์หนึ่ง ๆ ถ้าหากผลที่ได้ในนิพจน์นั้น ๆ มีค่า
เป็นจริง คอมไพเลอร์จะเลือกประมวลผลคาสั่งหลังคาสั่ง #if
คาสั่ง #ifdef
ใช้ในการตรวจสอบว่ามีการกาหนดค่าคงที่นั้น ๆ โดยใช้ #define ไว้แล้วใช่
หรือไม่ ถ้ามีค่าเป็นจริง คอมไพเลอร์จะเลือกประมวลผลคาสั่งหลังคาสั่ง #ifdef
คาสั่ง #ifndef
ใช้ในการตรวจสอบว่าไม่มีการกาหนดค่าคงที่นั้น ๆ โดยใช้ #define ไว้แล้วใช่
หรือไม่ ถ้ามีค่าเป็นจริง คอมไพเลอร์จะเลือกประมวลผลคาสั่งหลังคาสั่ง #ifdef
คาสั่ง #elif
ใช้ตรวจสอบเงื่อนไขในกรณีที่ใช้ #if, #ifdef และ #ifndef แล้วผลลัพธ์ที่ได้เป็น
เท็จ จากนั้นจะตรวจสอบเงื่อนไขใน #elif ต่อไป
คาสั่ง #else
ในกรณีตรวจสอบเงื่อนไข #if, #ifdef, #ifndef และ #elif แล้วผลลัพธ์ที่ได้เป็น
เท็จ หากกาหนด #else ผลที่ได้จะทางานภายใต้คาสั่ง #else
คาสั่ง #endif
เป็นการบอกจุดสิ้นสุดของเงื่อนไขของคาสั่ง #if, #ifdef, #ifndef, #elif และ
#else
- 5. มาโคร (Macro)
มาโคร (Macro) เป็นสิ่งที่ถูกกาหนดขึ้นมาเพื่อใช้งานร่วมกันทั้งโปร
เจ็กต์ ซึ่งแบ่งออกเป็น 2 ประเภท ได้แก่
มาโครที่ผู้เขียนโปรแกรมสร้างขึ้น (Macro Definition)
มาโครมาตรฐาน (Standard Predefined Positioning Macros)
- 6. มาโครที่ผู้เขียนโปรแกรมสร้างขึ้น (Macro Definition)
Macro Definition เป็นมาโครที่ถูกสร้างขึ้นโดยผู้เขียนโปรแกรม ใน
การกาหนดค่ามาโครสามารถกาหนดได้โดยใช้ Preprocessor Directive
#define ได้ดังนี้
#define<identifier><replacement token list>
โดยที่
identifier
replacement token list
เป็นชื่อของมาโครที่ต้องการสร้าง
เป็นสิ่งที่ต้องการให้มาโครนั้น ๆ ทางาน
- 7. มาโครอี ก รู ป แบบหนึ่ ง เป็ น มาโครที่ ส ามารถรั บ
ค่าพารามิเตอร์เพื่อประมวลผลในมาโครได้ ซึ่งมีรูปแบบ
ดังนี้
#define<identifier><parameter list><replacement token list>
โดยที่
identifier
เป็นชื่อของมาโครที่ต้องการสร้าง
parameter list
เป็นพารามิเตอร์ที่ต้องการกาหนดให้กับมาโครนั้น ๆ
replacement token list เป็นสิ่งที่ต้องการให้มาโครนั้น ๆ ทางาน
- 8. มาโครมาตรฐาน (Standard Predefined Positioning Macros)
เป็นมาโครมาตรฐานในภาษา C (ISO/ANSI) ให้ผู้ใช้เรียกใช้
มาโครเหล่ า นี้ ไ ด้ เ ลย (หากคอมไพเลอร์ ไ ม่ ส ามารถเรี ย กใช้ Macro
Standard ตัวใดตัวหนึ่งได้ ถือว่าคอมไพเลอร์ตัวนั้นยังไม่เป็นไปตาม
มาตรฐาน ISO/ANSI C)
Macro Standard
_FILE_
_LINE_
_STDC_
การใช้งาน
แสดงชื่อไฟล์ปัจจุบนที่เรียกใช้มาโคร
ั
แสดงบรรทัดปัจจุบัน
แสดงคอมไพเลอร์ ที่ ใ ช้ ง านว่ า เป็ น ไปตามมาตรฐาน
ISO/ANSI C หรือไม่ (1 = เป็น, 0 = ไม่เป็น)
_DATE_
แสดงวันที่ที่เรียกใช้มาโคร
_TIME_
แสดงวันเวลาที่เรียกใช้มาโคร
_TIMESTAMP_ แสดงวันที่และเวลาปัจจุบนที่เรียกใช้มาโคร
ั
- 9. Tip
• การเขียนมาโครมากกว่า 1 บรรทัด (Multiple Lines) หากผู้ใช้จะ
เขียนคาสั่งในมาโครหนึ่ง ๆ โดยใช้คาสั่งหลาย ๆ บรรทัด ให้ใส่
เครื่องหมาย blackslash () ในท้ายบรรทัดนั้น ๆ ด้วย ยกเว้น
บรรทัดสุดท้ายของมาโครนั้น ทั้งนี้เพื่อให้คอมไพล์ทราบว่า การ
ทางานของมาโครนั้น ๆ ยังไม่จบคาสั่ง
- 10. ที่มา : คู่มืออบรมครูวิทยาศาสตร์ คณิตศาสตร์ คอมพิวเตอร์ โลก ดาราศาสตร์ และอวกาศ ระดับมัธยมศึกษาตอนปลาย
หนังสือเรียนรายวิชาเพิ่มเติม การเขียนโปรแกรมเบื้องต้นด้วยภาษา C บริษทซัคเซสมีเดีย
คู่มือเรียนเขียนโปรแกรมภาษา สานักพิมพ์ IDC PREMIER