errno
|
定义于头文件
<cerrno>
|
||
|
#define errno /* implementation-defined */
|
||
errno 是用于错误指示的预处理器宏。它展开为类型为 int 的 静态 (C++11 前) 线程局部 (C++11 起) 可修改左值。
多个标准库函数通过向
errno
写入正整数来指示错误。通常,
errno
的值会被设置为
<cerrno>
中列出的错误代码之一,这些代码是以字母
E
开头、后跟大写字母或数字的宏常量。
程序启动时 errno 的值为 0 ,尽管库函数被允许在无论是否发生错误时向 errno 写入正整数,但库函数从不会将 0 存入 errno 。
示例
#include <cerrno> #include <clocale> #include <cmath> #include <cstring> #include <iostream> int main() { const double not_a_number = std::log(-1.0); std::cout << not_a_number << '\n'; if (errno == EDOM) { std::cout << "log(-1) failed: " << std::strerror(errno) << '\n'; std::setlocale(LC_MESSAGES, "de_DE.utf8"); std::cout << "Or, in German, " << std::strerror(errno) << '\n'; } }
可能的输出:
nan log(-1) failed: Numerical argument out of domain Or, in German, Das numerische Argument ist ausserhalb des Definitionsbereiches
缺陷报告
下列行为变更缺陷报告被追溯应用于先前发布的C++标准。
| 缺陷报告 | 应用于 | 发布时的行为 | 正确行为 |
|---|---|---|---|
| LWG 310 | C++98 |
未明确说明
errno
是宏
还是具有外部链接的标识符 |
errno
必须
是宏 |
参见
|
用于标准POSIX兼容错误条件的宏
(宏常量) |
|
|
向
stderr
输出当前错误对应的字符串
(函数) |
|
|
返回给定错误码的文本描述
(函数) |
|
|
C 文档
for
errno
|
|