Вопрос про функции на Си

Тема в разделе "WASM.BEGINNERS", создана пользователем ajak, 11 май 2009.

  1. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    Привет!!!
    Народ, подскажи а так можно зделать и есть ли такая возможность у си. В общем есть переменная-функция. Меняя её текстовое значение и вызывается каждый раз разная функция, с именем которое мы присвоили. Что-то типа того. Но не макрос. Возможно ли это?
     
  2. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    ajak
    а теперь по-русски
     
  3. Aquila

    Aquila Самурай дзена

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    1.467
    Адрес:
    Russia, Moscow
    varnie
    Он хочет что-то типа eval'а.

    ajak
    Думаю, так как ты хочешь, нельзя :).
     
  4. nobodyzzz

    nobodyzzz New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2005
    Сообщения:
    475
    http://neugierig.org/software/c-repl/ ?
     
  5. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    Существует вероятность того, что один хочет обладать, лайк, указателем на функцию?

    Код (Text):
    1. typedef int (__stdcall * FuncType)(char*);
    2.  
    3. int __stdcall FuncA(char* text)
    4. {
    5.     // do this
    6. }
    7.  
    8. int __stdcall FuncB(char* text)
    9. {
    10.     // do that
    11. }
    12.  
    13. int main()
    14. {
    15.     FuncType pFunc;
    16.  
    17.     if (black == white)
    18.         pFunc = &FuncA;
    19.     else
    20.         pFunc = &FuncB;
    21.  
    22.     pFunc("Execute FuncA or FuncB");
    23. }
     
  6. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    ajak
    речь о функторе?
     
  7. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    Sol_Ksacap
    Да, что то типа этого кода, много функиий, и есть типа указателя или переменной, куда мы заносим имя функции а потом вызываем.

    только не работает чтот
    void *func();

    void read()
    {
    }

    void write()
    {
    }

    func=write;
    func() - вызов
    Но не работает, компиль ругается
     
  8. Aquila

    Aquila Самурай дзена

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    1.467
    Адрес:
    Russia, Moscow
    void *func();

    замени на

    void (*func)( void );
     
  9. SL7549

    SL7549 New Member

    Публикаций:
    0
    Регистрация:
    24 мар 2009
    Сообщения:
    17
    Код (Text):
    1. #include <stdio.h>
    2.  
    3. int (*func)();
    4.  
    5. int func1()
    6. {
    7.     return 42;
    8. }
    9. int func2()
    10. {
    11.     return 1337;
    12. }
    13.  
    14. int main()
    15. {
    16.     func = &func1;
    17.     printf("%d\n",func());
    18.     func = &func2;
    19.     printf("%d\n",func());
    20.     return 0;
    21. }
    gcc 4.3.3, все нормально
     
  10. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    О, класс ребята, спасибо