У нас была похожая проблема несколько лет назад: огромная структура информации о конфигурации, которую мы хотели отразить. Поэтому мы написали сценарий Perl, чтобы найти структуру, проанализировать ее члены и вывести файл C ++, который выглядел следующим образом:
struct ConfField
{ const char* name;
int type;
size_t offset;
};
ConfField confFields[] = {
{ "version", eUInt32, 0 },
{ "seqID", eUInt32, 4 },
{ "timestamp", eUInt64, 8 },
// ... lots more ...
{ 0, 0, 0 }
};
И мы бы подали скрипт с выводом gcc -E
.
В настоящее время я понимаю, что gccxml может выводить XML-файл, представляющий любой исходный код C ++, который может компилировать gcc, поскольку он фактически использует внешний интерфейс g ++ для анализа. Поэтому я бы порекомендовал соединить его со скриптом синтаксического анализа XML (я бы использовал Python с библиотекой lxml ), чтобы узнать все, что вы когда-либо хотели знать о вашем источнике C ++.