如何在c++中使用errno ?

How do I use errno in C++

本文关键字:errno c++      更新时间:2023-10-16

我不明白c++中的errno库是干什么用的?其中设置了哪些类型的错误,我如何知道哪个数字代表哪个错误?

是否影响程序执行?

errno.h是c++的C子集的一部分。它由C库使用,包含错误代码。如果调用函数失败,则将变量"errno"设置为相应的错误。

如果你使用的是c++标准库,这是没有用的。

在C语言中,有一些函数可以将errno代码转换为C字符串。如果你的代码是单线程的,你可以使用strerror,否则使用strerror_r(参见http://www.club.cc.cmu.edu/~cmccabe/blog_strerror.html)

例如,在C中它是这样工作的:

 int result = call_To_C_Library_Function_That_Fails();
 if( result != 0 )
 {
    char buffer[ 256 ];
    strerror_r( errno, buffer, 256 ); // get string message from errno, XSI-compliant version
    printf("Error %s", buffer);
     // or
    char * errorMsg = strerror_r( errno, buffer, 256 ); // GNU-specific version, Linux default
    printf("Error %s", errorMsg); //return value has to be used since buffer might not be modified
    // ...
 }

当你在使用C库或操作系统库时,你可能需要在c++中使用它。例如,如果你在Unix系统中使用sys/socket.h API。

对于c++,如果你要对一个C API调用做一个包装,你可以使用你自己的c++异常,它将使用errno.h从你的C API调用错误代码中获得相应的消息。