首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C標準庫參考指南:errno.h 錯誤碼機制與 EDOM/ERANGE 宏詳解

     編輯:關於C語言

errno.h 核心組件

組件類型說明
EDOM宏定義域錯誤(如 sqrt(-1)、log(0))
ERANGE宏值域錯誤(結果溢出,如 exp(1000))
errno全局變量線程局部存儲,程序啟動為 0,錯誤時置對應碼

宏定義形式

#define EDOM some_value
#define ERANGE some_value

具體數值由實現定義(如 Linux:EDOM=33, ERANGE=34)。

errno 變量行為

  • 程序啟動時初始化為 0
  • 庫函數發生錯誤時設置對應錯誤碼
  • 成功調用不會清零 errno,需在調用前手動置 0 再檢查
  • 多線程中為線程局部變量(TLS),互不干擾

典型使用模式

#include 
#include 
#include 

errno = 0;
double r = sqrt(-1.0);
if (errno == EDOM) printf("定義域錯誤\n");

errno = 0;
r = exp(1000);
if (errno == ERANGE) printf("值域溢出\n");

擴展:strerror/perror

  • char *strerror(int errnum):返回錯誤描述字符串
  • void perror(const char *s):輸出 s: 錯誤描述 到 stderr

英文原文:ACM UIUC C Guide
譯者:柳驚鴻 (Poechant)

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved