Переделать макрос в функцию
От: Аноним  
Дата: 03.09.09 10:44
Оценка:
Сабж. Как можно сделать подобное в этом коде? Если бы не поле operand, то делается всё просто.

struct foo {
    int foo_a;
    int foo_b;
    int foo_c;
};

struct barstruct {
    int c;
    int d;

    foo * get_foo(int n) { return &f; }
private:
    foo f;
};

#define FUNC(res, operand) \
else if (fillbuff(buf) == res) \
{ \
    foo * f = bar.get_foo( bar.c );    \
    if (f) \
        return f->operand; \
}

int fillbuff(char const * buf)
{
    int i;
    /// ...
    return i;
}

int main()
{
    //...
    barstruct bar;
    char * buf;
    if (fillbuff(buf) == 0) {
        return 0;
    }
    FUNC(1, foo_a)
    FUNC(2, foo_b)
    FUNC(3, foo_c)
    //...
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.