LINUX.ORG.RU

как внедрить в код определение типа?


0

0

например есть

typedef enum {E_1, E_2, E_QTY} e_t;

e_t e;

надо чтобы автоматически генерились и ставились в соответствие Е_1, Е_2,... константные строки "E_1", "E_2", ...

возможно при помощи массива { [E_1]="E_1", [E_2]="E_2", }

или какой нибуть автоматически генерируемой ф-и

★★★★★
Ответ на: комментарий от tailgunner

впринципе да

надо из структуры в памяти выдирать поля по именам и в часности поля типа enum преобразовывать в символические значения

cvv ★★★★★
() автор топика
Ответ на: комментарий от cvv

нужные имена полей будет задавать пользователь в рантайме

приблизительно типа как в gdb можно получить значение поля структуры отлаживаемой программы и при этом для энумов видеть их Имена значений а не цифры

cvv ★★★★★
() автор топика

>надо чтобы автоматически генерились и ставились в соответствие Е_1, Е_2,... константные строки "E_1", "E_2", ...

По-человечески - никак. Можно через макрос-костыль.

Sectoid ★★★★★
()

1. компилировать программу с отладочной информацией и выдирать её в рантайме. Вроде бы там имена enum-ов есть.

2. сделать reflectionable enum, на С++ с небольшой препроцессорной магией это реально, на C - не знаю.

3. switch

Legioner ★★★★★
()
Ответ на: комментарий от Sectoid

а можно пример?

впринципе здесь можно связатся с cog но что-то никакого желания...

cvv ★★★★★
() автор топика
Ответ на: комментарий от cvv

иметь что нибуть общего с питоном...

cvv ★★★★★
() автор топика

Если это имеет какой-то самостоятельный смысл (не отладка), то почему бы не хранить имена каким-то образом? Генерацию соответствующего кода можно автоматизировать.

anonymous
()
Ответ на: комментарий от anonymous

>Если это имеет какой-то самостоятельный смысл (не отладка)

имеет

>Генерацию соответствующего кода можно автоматизировать.

а идеи как сделать чтобы не сильно сложно реализовывать?

cvv ★★★★★
() автор топика
Ответ на: комментарий от cvv

Ну грубо говоря для каждого

enum {E_1, E_2, E_QTY} e_t;

создавать

enum {"E_1", "E_2", "E_QTY"} e_t_names;

ну и так далее.

Конкретно сказать сложно, не понятно, как ты это использовать собираешься.

anonymous
()
Ответ на: комментарий от anonymous

Тфу, что за хрень написал. Во втором случае должен быть массив, конечно.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.