C++ åèæå
- C++11
- C++14
- C++17
- C++20
- C++ ç¼è¯å¨æ¯ææ åµè¡¨
- ç¬ç«ä¸å®¿ä¸»å®ç°
- C++ è¯è¨
- C++ å ³é®è¯
- é¢å¤çå¨
- C++ æ ååºå¤´æä»¶
- å ·åè¦æ±
- åè½ç¹æ§æµè¯ (C++20)
- å·¥å ·åº
- ç±»åæ¯æï¼åºæ¬ç±»åãRTTIãç±»åç¹æ§ï¼
- æ¦å¿µåº (C++20)
- é误å¤ç
- std::exception_ptr
- std::error_code
- std::error_condition
- std::terminate
- std::exception
- std::current_exception
- std::rethrow_exception
- std::make_exception_ptr
- std::unexpected
- std::uncaught_exception, std::uncaught_exceptions
- assert
- errno
- std::nested_exception
- std::throw_with_nested
- std::rethrow_if_nested
- std::terminate_handler
- std::get_terminate
- std::set_terminate
- std::bad_exception
- std::unexpected_handler
- std::get_unexpected
- std::set_unexpected
- é误å·
- std::logic_error
- std::invalid_argument
- std::domain_error
- std::length_error
- std::out_of_range
- std::runtime_error
- std::range_error
- std::overflow_error
- std::underflow_error
- std::tx_exception
- std::error_category
- std::generic_category
- std::system_category
- std::errc
- std::system_error
- 注é
- 卿å å管ç
- æ¥æåæ¶é´å·¥å ·
- å符串åº
- 容å¨åº
- è¿ä»£å¨åº
- èå´åº (C++20)
- ç®æ³åº
- æ°å¼åº
- è¾å ¥/è¾åºåº
- æä»¶ç³»ç»åº
- æ¬å°ååº
- æ£å表达å¼åº
- ååæä½åº
- çº¿ç¨æ¯æåº
- å®éªæ§ C++ ç¹æ§
- æç¨çèµæº
- ç´¢å¼
- std 符å·ç´¢å¼
- åç¨æ¯æ (C++20)
- C++ å ³é®è¯
ä½ç½®ï¼é¦é¡µ > C++ åèæå >é误å¤ç > errno
errno
| å®ä¹äºå¤´æä»¶ <cerrno>
|
||
| #define errno /*implementation-defined*/ |
||
errno æ¯ç¨äºé误æç¤ºçé¢å¤çå¨å®ãå®å±å¼æä¸ä¸ªéæ (C++11 å)线ç¨å±å (C++11 èµ·)ç int ç±»åå¯ä¿®æ¹å·¦å¼ã
æ°ä¸ªæ ååºå½æ°éè¿åå
¥æ£æ´æ°å° errno æç¤ºé误ã errno çå¼è¢«å
¸åå°è®¾ç½®ä¸ºä½ä¸ºåäº <cerrno> çï¼ä»¥åæ¯ E èµ·å§ï¼åé大ååæ¯ææ°åçå®å¸¸éã
ç¨åºå¯å¨æ¶ errno çå¼ä¸º â0â ï¼èä¸å°½ç®¡ä¸ç®¡å¨é误åçä¸å¦æ¶ï¼å
许åå
¥æ£æ´æ°å° errno ï¼åºå½æ°å³ä¸ä¼åå¨ â0â äº errno ã
示ä¾
è¿è¡æ¤ä»£ç
#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
ç¼ºé·æ¥å
ä¸åæ´æ¹è¡ä¸ºçç¼ºé·æ¥å追溯å°åºç¨äºä»¥ååºçç C++ æ åã
| DR | åºç¨äº | åºçæ¶çè¡ä¸º | æ£ç¡®è¡ä¸º |
|---|---|---|---|
| LWG 310 | C++98 | æªææ errno æ¯å®è¿æ¯æå¤é¨é¾æ¥çæ è¯ç¬¦ | errno å¿ é¡»æ¯å® |
åé
| å
¼å®¹æ å POSIX çé误æ¡ä»¶çå® (å®å¸¸é) | |
| æ¾ç¤ºå¯¹åºå½åé误çåç¬¦ä¸²äº stderr (彿°) | |
| è¿åç»å®é误ç çææ¬çæ¬ (彿°) |