3
เหตุผลที่อยู่เบื้องหลังฟังก์ชันไลบรารี C ไม่เคยตั้งค่า errno เป็นศูนย์
เอกสารมาตรฐาน C ที่ไม่มีฟังก์ชันไลบรารีมาตรฐาน C ตั้งerrnoเป็นศูนย์ ทำไมถึงเป็นอย่างนี้ ฉันเข้าใจว่ามันมีประโยชน์สำหรับการเรียกฟังก์ชั่นหลาย ๆ อย่างและตรวจสอบเฉพาะerrnoหลังจากที่ผ่านมา - ตัวอย่างเช่น: errno = 0; double x = strtod(str1, NULL); long y = strtol(str2, NULL); if (errno) // either "strtod" or "strtol" failed else // both succeeded อย่างไรก็ตามนี่ไม่ถือว่าเป็น "การปฏิบัติที่ไม่ดี" หรือไม่? เนื่องจากคุณกำลังตรวจสอบerrnoเมื่อสิ้นสุดเท่านั้นคุณจะรู้ว่าหนึ่งในฟังก์ชันนั้นล้มเหลว แต่ไม่ใช่ฟังก์ชั่นใดที่ล้มเหลว เพียงแค่รู้ว่ามีบางสิ่งที่ไม่ดีพอสำหรับโปรแกรมที่ใช้งานได้จริง ผมพยายามมองหาเอกสารต่างๆ C เหตุผล <errno.h>แต่ส่วนมากของพวกเขาไม่ได้มีรายละเอียดมากสำหรับ