[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

а кто C хорошо знает?



имеется некая структурка

struct something {
    ...

    unsigned count;
    unsigned element[0];
};

то есть в поле count сказано сколько элементов будет после структурки.
ну и обращение к ним идет так:

for (i = 0; i < s->count; i++) {
    s->elements[i] = i;
}


теперь когда мы это хотим саллоцировать, то пишем такой аллокатор

struct something * some_alloc(unsigned size) {
    return malloc(sizeof(struct something) + sizeof(unsigned) * size);
}


а вот если появилась необходимость саллоцировать такой объект
статически, как быть?

хочется макрос 

#define SOMETHING(name, size) ...

чтобы пользователь мог сказать

void foo(void) {
    static SOMETHING(name, 5);
    SOMETHING(name2, 10);
}

и получить саллоцированный на стадии компиляции (или в стеке) такой объект?


-- 

. ''`.                               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


Reply to: