ชื่อฟังก์ชัน : assert
ไฟล์ส่วนหัว : <assert.h>
ต้นแบบฟังก์ชัน : ยืนยันเป็นโมฆะ(int expression);
ฟังก์ชัน : ยืนยันว่านิพจน์ถูกต้องหรือไม่
พารามิเตอร์ : expression หากค่าเป็นเท็จ (นั่นคือ 0) จากนั้นจะพิมพ์ข้อความแสดงข้อผิดพลาดไปที่ stderr ก่อน จากนั้นจึงยุติโปรแกรมโดยการเรียก abort
ค่าส่งคืน : ไม่มีค่าส่งคืน
เติมเงิน :
1. การโทรบ่อยครั้งจะส่งผลอย่างมากต่อประสิทธิภาพของโปรแกรมและเพิ่มค่าใช้จ่ายเพิ่มเติม หลังจากการดีบัก คุณสามารถปิดใช้งานการยืนยันการโทรได้โดยการแทรก #define NDEBUG ก่อนคำสั่งที่มี #include <assert.h>
2. ตรวจสอบความถูกต้องตามกฎหมายของพารามิเตอร์ที่ส่งเข้ามาเมื่อเริ่มต้นฟังก์ชัน
3. การยืนยันแต่ละรายการจะทดสอบเงื่อนไขเดียวเท่านั้น เนื่องจากเมื่อมีการทดสอบหลายเงื่อนไขในเวลาเดียวกัน หากการยืนยันล้มเหลว จะเป็นไปไม่ได้ที่จะระบุโดยสัญชาตญาณว่าเงื่อนไขใดล้มเหลว
4. คุณไม่สามารถใช้คำสั่งที่เปลี่ยนแปลงสภาพแวดล้อมได้ เนื่องจาก assert จะมีผลเฉพาะใน DEBUG เท่านั้น หากคุณทำเช่นนี้ คุณจะประสบปัญหาเมื่อโปรแกรมละเว้นคำสั่ง assert เมื่อกำลังทำงานอยู่จริง เช่น:
ความผิดพลาด:
ยืนยัน (i++<100);
เนื่องจากหากเกิดข้อผิดพลาด เช่น i=100 ก่อนดำเนินการ คำสั่งนี้จะไม่ถูกดำเนินการ และคำสั่ง i++ จะไม่ถูกดำเนินการ
ถูกต้อง:
ยืนยัน(i<100);i++;
5. ควรมีบรรทัดว่างระหว่างการยืนยันและข้อความต่อไปนี้เพื่อสร้างความรู้สึกสอดคล้องกันทางตรรกะและภาพ
6. ในบางสถานที่ assert ไม่สามารถแทนที่การกรองแบบมีเงื่อนไขได้ Assert ใช้เพื่อหลีกเลี่ยงข้อผิดพลาดที่ชัดเจน ไม่ใช่เพื่อจัดการกับข้อยกเว้น ข้อผิดพลาดและข้อยกเว้นจะแตกต่างกัน ข้อผิดพลาดไม่ควรเกิดขึ้น และข้อยกเว้นเป็นสิ่งที่หลีกเลี่ยงไม่ได้ ข้อยกเว้นของภาษา C สามารถจัดการได้ผ่านการตัดสินแบบมีเงื่อนไข และภาษาอื่นๆ ก็มีกลไกการจัดการข้อยกเว้นของตัวเอง กฎง่ายๆ ในการใช้ assert คือการใช้มันที่จุดเริ่มต้นของ method หรือ function หากคุณใช้มันระหว่างกลางของ method คุณต้องพิจารณาอย่างรอบคอบว่าเหมาะสมหรือไม่ กระบวนการทำงานไม่ได้เริ่มต้นที่จุดเริ่มต้นของวิธีการ และปัญหาที่เกิดขึ้นระหว่างการดำเนินการของกระบวนการทำงานถือเป็นข้อยกเว้นเกือบทั้งหมด
ตัวอย่างโปรแกรม : ยืนยันตัวแปร a<80 แล้วส่งออกผลลัพธ์
#include<assert.h>#include<stdio.h>intmain(void){inta=50;assert(a<80);//Assert a<80 ถ้าเป็น 0 จะแสดงข้อความแสดงข้อผิดพลาดและยุติโปรแกรม หรือดำเนินการ printf (Assertaistruen);return(0);} ต่อไป
ผลการวิ่ง:
ยืนยัน