Как использовать errno в C++

Я не могу понять, какого errno библиотека на C++ для? Какие типы ошибок установлены в нем и как узнать, какое число означает какую ошибку?

влияет ли это на выполнение программы?

1 ответов


errno.h является частью подмножества C C++. Он используется библиотекой C и содержит коды ошибок. Если вызов функции завершается неудачно, переменная "errno" устанавливается соответственно ошибке.

Это будет бесполезно, если вы используете стандартную библиотеку C++.

В C у вас есть функции, которые переводят коды errno в C-строки.

например, в C он работает следующим образом:

 int result = call_To_C_Library_Function_That_Fails();

 if( result != 0 )
 {
    char buffer[ 256 ];
    char * errorMessage = strerror_r( errno, buffer, 256 ); // get string message from errno

    // ...
 }

Вам может понадобиться это, конечно, в C++, когда вы используете с библиотека или библиотека ОС, которая находится в C. Например, если вы используете sys/socket.H API в системах Unix.

С C++, если вы делаете оболочку вокруг вызова C API, вы можете использовать свои собственные исключения C++, которые будут использовать errno.h чтобы получить соответствующее сообщение из кодов ошибок вызова C API.