2

簡単な質問だとは思いますが、C++ の知識を深めたいと思っています。ある種のabort機能が使用できると思います。しかし、それがテキストを返すとは思いませんdie('hello');

4

3 に答える 3

7

C または C++ には、「メッセージを出力してから終了する」というものはありません。die次のような独自の関数 for (またはpanic、私が好むように ) を非常に簡単に作成できます。

void die(const std::string& msg)
{
    std::cerr << msg << std::endl;
    exit(1);
}

または、メモリ不足の状態で失敗する可能性がある文字列の作成に関する問題を回避したい場合は、次のようにします。

void die(const char *msg)
... 

(残りは上記と同じである必要があります)。ここでの欠点は、文字列を自明に連結できないことです。たとえば、die(std::string("Could not open file ") + filename);では機能しませんconst char *

var_dumpC++ では、任意の型の変数または配列の内容を実際に取得する直接的な方法がないため、これを行う関数ははるかに困難です。おそらく次のようなことができます:

template<typename T>
void var_dump(const T& var)
{
   std::cout << var << endl;
}

template<typename T, size_t N>
void var_dump(const T (&var)[N])
{
   for(i : var)
   {
      std::cout << i << endl;
   }
}

後者は、次の PHP コードに少し似ていますforeach($var as $i) echo $i . "\n";。また、構文が少し間違っている可能性がありますが、わかりません。

于 2013-10-14T20:50:10.560 に答える
0

デバッグ目的でこれらの同等物が必要だと仮定すると...

die()の代わりに、デバッガーを呼び出すことができます。

var_export()の代わりに、デバッガーで変数の内容を調べることができます。

于 2013-10-14T21:44:40.283 に答える