> 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