простой способ отобразить содержимое структур данных в C? - PullRequest
2 голосов
/ 26 ноября 2009

В целях отладки я считаю полезным отображать содержимое структур данных. (Например, в Python я бы просто сделал «print some_dict_name»).

Может ли это быть легко достигнуто в C с помощью стандартной библиотеки, или я должен сам реализовать это в зависимости от структуры данных?

Рассмотрим следующий код, в котором мне снова нужно перебрать StructArray, чтобы отобразить все его содержимое.

#include <stdio.h>

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 голосов
/ 26 ноября 2009

Вам нужно реализовать это самостоятельно для каждого типа данных.
В C нет системы типов, где вы можете динамически или статически посещать каждую часть каждого типа.

Если вы отлаживаете что-то вроде gdb, его интеллекта достаточно, чтобы читать информацию об отладке и печатать содержимое типа. Но вы не можете сделать это из самой программы, для типов C не существует такого понятия, как самоанализ.

1 голос
/ 26 ноября 2009

По-настоящему хакерским способом было бы скомпилировать вашу программу с отладочной информацией и встроить в нее отладочную библиотеку для чтения отладочной информации из самой программы во время выполнения. Разберите, что из него следует проанализировать, и распечатайте структуру соответствующим образом.

Хотя это сам по себе проект.

0 голосов
/ 27 ноября 2009

Или вы можете использовать что-то вроде DDD , отладчик отображения данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...