> 16 union
> 17 {
> 18 struct base body;
> 19 int str[sizeof(struct base)+c];
> 20 } object;
тут может быть просто struct и тогда не надо будет sizeof(struct base)
вопрос как это в макрос засунть, чтобы потом функции которые хотят
указатель на struct base с этим работать?
#define SOMETING(__name, __size) \
struct { \
struct something s; \
unsigned items[__size]; \
} __attribute__((packed)) __name = { \
.s = { \
.size = __size, \
} \
}
Делает почти все что нужно:
int some_func(struct something *);
static SOMETING(variable, 10);
void foo(void) {
...
some_func((struct something *)&variable);
...
}
То есть пользоваться можно, но надо приводить типы.
А хорошо бы сделать так чтобы типы приводить тоже не надо было, но
результат был такой же.
Как вариант можно сделать прототип у функции some_func:
int some_func(void *);
но это даже хуже чем приведение типа при вызове имхо
--
. ''`. Dmitry E. Oboukhov
: :’ : email: unera@debian.org jabber://UNera@uvw.ru
`. `~’ GPGKey: 1024D / F8E26537 2006-11-21
`- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
Attachment:
signature.asc
Description: Digital signature