บ่อยครั้งมากที่ฉันเห็นในรหัส C ปฏิเสธรหัสข้อผิดพลาดกลับเช่นแทนreturn -EINVAL
return EINVAL
เหตุใดจึงต้องใช้การปฏิเสธ
บ่อยครั้งมากที่ฉันเห็นในรหัส C ปฏิเสธรหัสข้อผิดพลาดกลับเช่นแทนreturn -EINVAL
return EINVAL
เหตุใดจึงต้องใช้การปฏิเสธ
คำตอบ:
ใน UNIXen หลาย ๆ อนุสัญญาสำหรับ syscalls คือพวกเขาส่งคืนรหัสข้อผิดพลาดเมื่อตะกี้ในกรณีที่เกิดข้อผิดพลาดและมูลค่าที่แท้จริงในกรณีที่ประสบความสำเร็จ
นี่คือการแปลในด้านพื้นที่ผู้ใช้-1
เพื่อหาข้อผิดพลาดกับรหัสข้อผิดพลาดในเชิงบวกerrno
หรือมูลค่าที่แท้จริงในกรณีที่ประสบความสำเร็จ
ความต้องการในการกำหนดค่าส่งคืนแบบสองทางนี้เป็นเพราะการคืนค่าหลายครั้งในภาษาประเภทนี้นั้นน่ารำคาญเพราะคุณต้องหันไปใช้การส่งผ่านพารามิเตอร์เพื่อเก็บข้อผิดพลาดในที่สุด
มันเป็นแบบแผน ฟังก์ชั่นจำนวนมากส่งคืนผลลัพธ์เชิงบวกอย่างเข้มงวดต่อความสำเร็จและผลลัพธ์เชิงลบเมื่อเกิดความล้มเหลว เริ่มแรกมันเกี่ยวข้องกับโค้ดส่งคืนของกระบวนการ Unix ความสำเร็จถูกระบุด้วย 0