Skip to main content

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

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

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

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

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

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