gpt4 book ai didi

c++ - 我如何在 C++ 中使用 errno

转载 作者:可可西里 更新时间:2023-11-01 15:12:58 26 4
gpt4 key购买 nike

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

是否影响程序执行?

最佳答案

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 中的 OS 库时,您当然可能需要它在 C++ 中。例如,如果您在 Unix 系统中使用 sys/socket.h API。

使用 C++,如果您要围绕 C API 调用进行包装,则可以使用您自己的 C++ 异常,这些异常将使用 errno.h 从您的 C API 调用错误代码中获取相应的消息。

关于c++ - 我如何在 C++ 中使用 errno,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7901117/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com