5

C++11 標準を勉強しています。error_code と errno が互いに関連しているかどうかを理解したいですか? はいの場合、どのように?いいえの場合、どの条件でerrnoが設定されると予想され、どの条件でerror_codeが設定されると予想されますか?

これを理解するために小さなテスト プログラムを作成しましたが、まだ少し混乱しています。助けてください。

#include <iostream>
#include <system_error>
#include <thread>
#include <cstring>
#include <cerrno>
#include <cstdio>

using namespace std;

int main()
{
    try
    {
        thread().detach();
    } catch (const system_error & e) {
        cout<<"Error code value - "<<e.code().value()<<" ; Meaning - "<<e.what()<<endl;
        cout<<"Error no. - "<<errno<<" ; Meaning - "<<strerror(errno)<<endl;
    }
}

Output -
Error code value - 22 ; Meaning - Invalid argument
Error no. - 0 ; Meaning - Success
4

1 に答える 1

7

errnoエラーが発生した場合の副作用としてそれを文書化する関数によって使用されます。これらの関数は、例外をスローしない C ライブラリまたは OS 関数です。 system_errorその例外をスローするために文書化されたライブラリ機能を使用しているときに、C++ 標準ライブラリによって使用されます。完全に分離します。最後に、ドキュメントを読んでください。

于 2013-04-05T06:09:08.017 に答える