Дуже часто в коді C я бачу заперечення повернених кодів помилок, наприклад return -EINVALзамість return EINVAL. Для чого використовується заперечення?
Дуже часто в коді C я бачу заперечення повернених кодів помилок, наприклад return -EINVALзамість return EINVAL. Для чого використовується заперечення?
Відповіді:
У багатьох UNIXen умовами для системних викликів є те, що вони повертають код помилки, заперечуваний у разі помилки, та фактичне значення у випадку успіху.
Це перекладається на стороні користувальницького простору на -1помилки з позитивним кодом помилки errnoабо фактичним значенням у разі успіху.
Необхідність цього подвійного призначення поверненого значення полягає в тому, що багаторазове повернення в такому вигляді мови набридає, оскільки вам доведеться вдатися до передачі зовнішніх параметрів, щоб уникнути можливої помилки.