การรวบรวมแบบมีเงื่อนไขคืออะไร

ในการเขียนโปรแกรมคอมพิวเตอร์การคอมไพล์แบบมีเงื่อนไขจะอธิบายความสามารถของตัวรวบรวมซอฟต์แวร์หรือตัวประมวลผลซอร์สโค้ดเพื่อรวมหรือละเว้นคำสั่งหรือบล็อกของโค้ดตามคำแนะนำเฉพาะภาษา คำสั่งที่ใช้เพื่อทริกเกอร์การคอมไพล์แบบมีเงื่อนไขในโปรแกรมมักจะเรียกว่าคำสั่ง pre-processor แม้ว่าพวกเขายังสามารถเป็นที่รู้จักกันเป็นคำสั่งคอมไพเลอร์ความเห็นตามเงื่อนไขหรือการกำหนดเงื่อนไข ขึ้นอยู่กับคอมไพเลอร์หรือภาษาที่ใช้คำสั่งแบบมีเงื่อนไขสามารถเป็นตัวแปรหรือมาโครที่ผู้ใช้กำหนดหรืออาจเป็นตัวแปรระบบที่คอมไพเลอร์หรือระบบปฏิบัติการกำหนด การคอมไพล์ตามเงื่อนไขมักใช้เพื่อกำหนดค่าซอร์สโค้ดไฟล์ชุดเดียวเพื่อให้สามารถคอมไพล์ได้ภายใต้สภาพแวดล้อมหรือระบบปฏิบัติการที่แตกต่างกันโดยไม่ต้องสลับหรือเปลี่ยนไฟล์ต้นฉบับ

เงื่อนไขที่กำหนดที่ใช้ในการทดสอบสำหรับการรวบรวมเงื่อนไขอาจแตกต่างกันไปจากภาษาหนึ่งไปยังอีกภาษาหนึ่ง แต่โดยทั่วไปแล้วจะเป็นแมโครหรือนิพจน์ข้อมูลเมตาอื่น ๆ ที่อยู่นอกขอบเขตของตัวแปรโปรแกรมปกติ ในภาษาเช่น C ตัวแปรมักจะเป็นมาโครที่ถูกอ่านโดยตัวประมวลผลล่วงหน้า ส่วนใหญ่แล้วแมโครไม่สามารถเข้าถึงได้โดยซอร์สโค้ดโปรแกรมที่รันได้จริงแม้ว่าจะมีอยู่ในไฟล์ต้นฉบับเดียวกันก็ตาม

คำสั่งที่ใช้ในการทดสอบตัวแปรเงื่อนไขที่กำหนดไว้เป็นพื้นฐานและปฏิบัติตามตรรกะเดียวกันกับคำสั่ง if-then การทดสอบพื้นฐานที่สามารถดำเนินการสำหรับการรวบรวมเงื่อนไขคือไม่ว่าจะมีการกำหนดค่าไม่ได้กำหนดหรือในบางกรณีไม่ว่าจะมีตัวแปรที่กำหนดไว้สองตัวที่เทียบเท่ากัน โดยทั่วไปแล้วตัวแปรหรือมาโครเองไม่ได้มีคุณค่าใด ๆ ที่มีนัยสำคัญเพราะการกำหนดมันเป็นสิ่งที่คำสั่งกำลังตรวจสอบ อย่างไรก็ตามสำหรับบางภาษาและคอมไพเลอร์ค่าของตัวแปรที่กำหนดอาจมีความสำคัญหากได้รับการประเมินสำหรับสถานะบูลีน

เมื่อคอมไพเลอร์พบคำสั่งที่ใช้สำหรับการรวบรวมเงื่อนไขคำสั่งจะถูกประเมินเพื่อดูว่าพวกเขาทดสอบว่าเป็นจริงหรือเท็จ หากเป็นจริงรหัสที่ติดตามคำสั่งจะถูกรวบรวมตามปกติ มิฉะนั้นคอมไพเลอร์จะข้ามรหัสที่มีอยู่ภายใต้คำสั่งอย่างสมบูรณ์ สิ่งนี้แตกต่างจากคำสั่งตรรกะแบบมีเงื่อนไขภายในโค้ดโปรแกรมที่เรียกทำงานได้เองเพราะแม้ว่าตรรกะนั้นจะมีบล็อกของโค้ดที่ไม่สามารถเรียกใช้งานได้ แต่มันก็จะถูกตีความและเรียบเรียงในกรณีส่วนใหญ่ ด้วยคำสั่ง pre-processor แบบมีเงื่อนไขจะไม่รวมรหัสการข้ามข้ามแปลหรือเรียบเรียง ควรสังเกตว่าเมื่อตัวประมวลผลล่วงหน้าได้ประเมินตัวแปรเงื่อนไขและคำสั่งทั้งหมดแล้วพวกเขาจะไม่ถูกคอมไพล์กับส่วนที่เหลือของโปรแกรมเพราะพวกมันมีจุดประสงค์เพื่อให้ทิศทางแก่คอมไพเลอร์เท่านั้น

การรวบรวมตามเงื่อนไขส่วนใหญ่มักจะใช้เพื่อรวมหรือแยกรหัสที่เฉพาะเจาะจงกับระบบปฏิบัติการหรือสภาพแวดล้อมเฉพาะ นี่หมายความว่าไลบรารีที่มีอยู่ในระบบปฏิบัติการเดียวสามารถถูกรวมเข้าด้วยเงื่อนไขหากคำสั่งกำหนดโปรแกรมที่กำลังถูกคอมไพล์ภายใต้ระบบปฏิบัติการนั้น อีกทางหนึ่งคำสั่งยังสามารถใช้เพื่อรวมหรือแยกรหัสตามตัวแปรที่ผู้ใช้กำหนด ซึ่งสามารถทำได้เพื่อให้การดีบักหรือรหัสการทำโปรไฟล์ไม่รวมอยู่ในโปรแกรมรุ่นสุดท้ายหรือคุณลักษณะบางอย่างสามารถเปิดใช้งานหรือปิดใช้งานได้โดยไม่ต้องเก็บสำเนาของรหัสแยกต่างหาก

ภาษาอื่น ๆ

บทความนี้ช่วยคุณได้ไหม ขอบคุณสำหรับความคิดเห็น ขอบคุณสำหรับความคิดเห็น

เราจะช่วยได้อย่างไร เราจะช่วยได้อย่างไร