2


0

Cでデータ構造の内容を表示する簡単な方法は?

デバッグのために、データ構造の内容を表示すると便利です。 (たとえば、Pythonでは、 "print some_dict_name"を実行します)。

これは標準ライブラリを使用してCでも簡単に達成できますか、データ構造に応じてこれを自分で実装する必要がありますか?

次のコードを考えてみましょう。ここでは、StructArrayをもう一度繰り返して、すべてのコンテンツを表示する必要があります。

#include

struct SomeStruct {
  int id;
  };

int main() {
  struct SomeStruct StructArray[10];
  int x = 0;

  for (x = 0; x < 10; x++) {
    StructArray[x].id = x;
  }

  for (x = 0; x < 10; x++) {
    printf("StructArray[%d].id = %d\n", x, StructArray[x].id);
  }
  return 0;
}

3 回答


8


データ型ごとに自分で実装する必要があります。 + Cには、各タイプの各部分を動的または静的にアクセスできるタイプシステムがありません。

ただし、gdbのようなものでライブデバッグしている場合は、デバッグ情報を読み取り、型の内容を出力するのに十分な知性を持っています。 しかし、プログラム自体からそれを行うことはできません。C型のイントロスペクションのようなものはありません。


1


本当にハック的な方法は、デバッグ情報を使用してプログラムをコンパイルし、実行時にプログラム自体からデバッグ情報を読み取るためにデバッグライブラリをプログラムにビルドすることです。 それから解析すべきものを解析し、それに応じて構造体を出力します。

ただし、それ自体はプロジェクトです。


0


または、http://www.gnu.org/software/ddd/ [DDD]のようなデータ表示デバッガーを使用することもできます。