Чому коди помилок заперечуються?


12

Дуже часто в коді C я бачу заперечення повернених кодів помилок, наприклад return -EINVALзамість return EINVAL. Для чого використовується заперечення?

c 

Відповіді:


8

У багатьох UNIXen умовами для системних викликів є те, що вони повертають код помилки, заперечуваний у разі помилки, та фактичне значення у випадку успіху.

Це перекладається на стороні користувальницького простору на -1помилки з позитивним кодом помилки errnoабо фактичним значенням у разі успіху.

Необхідність цього подвійного призначення поверненого значення полягає в тому, що багаторазове повернення в такому вигляді мови набридає, оскільки вам доведеться вдатися до передачі зовнішніх параметрів, щоб уникнути можливої ​​помилки.


4

Це конвенція; багато функцій повертають суттєво позитивний результат на успіх і негативний результат на невдачу. Спочатку це було пов'язано з кодом повернення Unix-процесу. Успіх вказав 0.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.