# Conditional Compilation

โดยปกติเทคนิคแบบนี้เราจะเจอภายใน header file หรือ library เป็นหลักครับ โดยมักจะใช้เพื่อเลือกเงื่อนไขก่อนการทำการคอมไพล์ ดังนั้นเงื่อนไขในการใช้เทคนิคการ Preprocessing ที่เป็นเงื่อนไขนั้นจะใช้เลือก สถาปัตยกรรม ฟังก์ชันหรือตัว source code ที่จะนำไป compile โดยตัวเงื่อนไขลักษณะนี้จะประกอบไปด้วย

* **#Ifdef <-- ถ้า เปิดเงื่อนไขถ้าเป็น 1 จะทำงานในเงื่อนไขนี้**
* **#ifndef <-- ถ้า-ไม่ ถ้าเงื่อนไขไม่เป็น 1 เป็น 0 จะทำงานในเงื่อนไขนี้**&#x20;
* **#elif <-- เงื่อนไขอื่นอันนี้ก็ทำงานในกรณีเป็น 1**
* **#else <-- ถ้าไม่มีเงื่อนไขอื่นๆแล้วจะทำในส่วนนี้**
* **#endif <-- ใช้ปิดเงื่อนไข**

#### Example

![เงื่อนไขในการเลือก Platform ในการคอมไพล์](https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MClo3nC-1US0rbK8Qau%2F-MQybeZXI5cJcIoH2vvw%2F-MQyeij0f3kDNR4aU0ai%2Fimage.png?alt=media\&token=dad60042-239f-4d0c-9b6f-8503bb20fa82)

```c
#ifdef (KL25_PLATFORM) && !(MSP_PLOATFORM)
    kl25_initial();
#elif (MSP_PLOATFORM) && !(KL25_PLATFORM)
    msp_initial();
#else
    #error "Please specific one platform target"
#endif
```

จากโค้ดด้านบนและรูปจะเห็นการทำงานจะเป็นการเลือก platform บนบอร์ดที่จะใช้งานเพื่อให้สามารถเลือกการโปรแกรมคอมไพล์บนโค้ดชุดเดียวกันแต่แตกต่างกันเพียง library ได้โดยไม่ต้องสร้างโค้ดอีกชุด
