Общий доступ к структурам данных C в C ++ через некоторую форму отражения? - PullRequest
2 голосов
/ 17 января 2012

Существует ли структура отражений для общего доступа к структурам данных C / C ++ (вложенные структуры, массивы указателей, различные другие основные типы данных)?

Если нет, то какие советы лучше всего подходят к этому?

Я пишу тестовое программное обеспечение для большого MS Windows C API с десятками и сотнями различных структур, некоторые из которых содержат вложенный массив указателей на структуры до нескольких уровней.

Для тестов структуры данных должны быть предварительно установлены со значениями и проверены впоследствии, согласно описаниям тестов, приведенным в виде строк. В настоящее время это запрограммировано довольно плоским и утомительным (и непоследовательным и подверженным ошибкам) ​​способом, который я хотел бы изменить.

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

Мне не нужно, чтобы это было полностью автоматизировано, было бы хорошо выполнить некоторую работу (скажем, одну или две строки кода) для каждого конкретного поля в структуре.

1 Ответ

1 голос
/ 17 января 2012

Вы описываете функцию, называемую отражением, которую C / C ++ не поддерживает.

Способ сделать это в C ++ - проанализировать исходные файлы, а затем сгенерировать больше исходного кода для выполнениянеобходимые вам операции, например, поиск каждого класса и вложенных классов, поиск каждой функции-члена и т. д.

Писать синтаксический анализатор C ++ сложно, но существует множество доступных бесплатных реализаций.

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