왜 오류 코드가 무시됩니까?


12

C 코드에서 반환 된 오류 코드를 무시하는 경우가 종종 있습니다 (예 : return -EINVAL대신) return EINVAL. 왜 부정을 사용 했습니까?

c 

답변:


8

많은 UNIXen에서 syscall에 대한 규칙은 오류가 발생한 경우 무시 된 오류 코드와 성공한 경우 실제 값을 리턴한다는 것입니다.

이는 사용자 공간 측 -1에서 양의 오류 코드가있는 오류 errno또는 성공한 경우 실제 값으로 변환됩니다.

이러한 이중 목적의 반환 값의 필요성은 이러한 종류의 언어에서 다중 반환이 귀찮기 때문에 최종 오류를 유지하기 위해 매개 변수 외부로 전달해야하기 때문입니다.


4

컨벤션입니다. 많은 함수가 성공하면 엄청나게 긍정적 인 결과를, 실패하면 부정적인 결과를 반환합니다. 처음에는 Unix 프로세스의 리턴 코드와 관련이있었습니다. 성공은 0으로 표시되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.