errno

定义于头文件 <cerrno>
#define errno /*implementation-defined*/

errno 是用于错误指示的预处理器宏。它展开成一个静态 (C++11 前)线程局域 (C++11 起)int 类型可修改左值。

数个标准库函数通过写入正整数到 errno 指示错误。 errno 的值被典型地设置为作为列于 <cerrno> 的,以字母 E 起始,后随大写字母或数字的宏常量。

程序启动时 errno 的值为 0 ,而且尽管不管在错误发生与否时,允许写入正整数到 errno ,库函数决不会存储 0errno

示例

#include <iostream>
#include <cmath>
#include <cerrno>
#include <cstring>
#include <clocale>
 
int main()
{
    double not_a_number = std::log(-1.0);
    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';
    }
}

可能的输出:

log(-1) failed: Numerical argument out of domain
Or, in German, Das numerische Argument ist ausserhalb des Definitionsbereiches

参阅

兼容标准 POSIX 的错误条件的宏
(宏常量)
显示对应当前错误的字符串于 stderr
(函数)
返回给定错误码的文本版本
(函数)

版本历史

  • (当前 | 先前 2017年6月6日 (二) 17:46Fruderica讨论 | 贡献. . (990字节) (-771). . (撤销)
  • 当前 | 先前 2014年10月26日 (日) 17:45P12bot讨论 | 贡献 . . (1,761字节) (0). . (Fix some translations) (撤销)
  • 当前 | 先前 2013年7月2日 (二) 09:02P12bot讨论 | 贡献 . . (1,761字节) (-84). . (Use {{lc}}. Update links. Various fixes.) (撤销)
  • 当前 | 先前 2012年11月2日 (五) 16:50P12bot讨论 | 贡献 . . (1,845字节) (+185). . (r2.7.3) (机器人添加:de, en, es, fr, it, ja, pt, ru) (撤销)
  • 当前 | 先前 2012年10月26日 (五) 11:35P12讨论 | 贡献 . . (1,660字节) (0). . (1个修订: Translate from the English version) (撤销)
  • 当前 | 先前 2012年10月26日 (五) 07:00TranslationBot讨论 | 贡献. . (1,660字节) (-19). . (Translated from the English version using Google Translate) (撤销)
  • 当前 | 先前 2012年10月25日 (四) 14:24P12讨论 | 贡献 . . (1,679字节) (0). . (1个修订: Translate from the English version) (撤销)
  • 当前 | 先前) 2012年10月25日 (四) 13:00TranslationBot讨论 | 贡献. . (1,679字节) (+1,679). . (Translated from the English version using Google Translate)