Вы имеете в виду выяснить, когда вы программируете или динамически во время выполнения?
Для первого, конечно.Просто найдите .h файл, который вы включаете, и вы найдете там определение структуры, включающее все поля.
Для последнего нет, это невозможно.C компилирует структуры в машинный код таким образом, что вся эта информация теряется.Например, если у вас есть структура {int x, float y, int z}
, и у вас есть некоторый код, который говорит в машинном коде
a = mystruct.y
, все, что останется, это что-то вроде поиска указателя на mystruct
, добавив 4к нему (размер int), и читает оттуда 4 байта, а затем делает с ним некоторые операции с плавающей запятой.Ни имена, ни типы этих структурных полей вообще не будут доступны, и, следовательно, невозможно найти их во время выполнения.