errno从标准库函数捕获错误消息。然而,有两个宏观值EDOM,ERANGE我发现很难区分。
cppreference 中的示例代码将执行以下操作
#include <stdio.h>
#include <math.h>
#include <errno.h>
void show_errno(void)
{
const char *err_info = "unknown error";
switch (errno) {
case EDOM:
err_info = "domain error";
break;
case EILSEQ:
err_info = "illegal sequence";
break;
case ERANGE:
err_info = "pole or range error";
break;
case 0:
err_info = "no error";
}
fputs(err_info, stdout);
puts(" occurred");
}
int main(void)
{
errno = 0;
acos(+1.1);
show_errno();
errno = 0;
log(0.0);
show_errno();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它会产生
domain error …Run Code Online (Sandbox Code Playgroud)