ทำไมรหัสข้อผิดพลาดเมื่อตะกี้?


12

บ่อยครั้งมากที่ฉันเห็นในรหัส C ปฏิเสธรหัสข้อผิดพลาดกลับเช่นแทนreturn -EINVAL return EINVALเหตุใดจึงต้องใช้การปฏิเสธ

c 

คำตอบ:


8

ใน UNIXen หลาย ๆ อนุสัญญาสำหรับ syscalls คือพวกเขาส่งคืนรหัสข้อผิดพลาดเมื่อตะกี้ในกรณีที่เกิดข้อผิดพลาดและมูลค่าที่แท้จริงในกรณีที่ประสบความสำเร็จ

นี่คือการแปลในด้านพื้นที่ผู้ใช้-1เพื่อหาข้อผิดพลาดกับรหัสข้อผิดพลาดในเชิงบวกerrnoหรือมูลค่าที่แท้จริงในกรณีที่ประสบความสำเร็จ

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


4

มันเป็นแบบแผน ฟังก์ชั่นจำนวนมากส่งคืนผลลัพธ์เชิงบวกอย่างเข้มงวดต่อความสำเร็จและผลลัพธ์เชิงลบเมื่อเกิดความล้มเหลว เริ่มแรกมันเกี่ยวข้องกับโค้ดส่งคืนของกระบวนการ Unix ความสำเร็จถูกระบุด้วย 0

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.