C++/C function pointers that return void*

前端 未结 6 1338
故里飘歌
故里飘歌 2020-11-28 14:57

I\'m trying to call a function that takes an argument, void(*)(void*, int, const char*), but I cannot figure out how to pass those arguments to the function.

6条回答
  •  暗喜
    暗喜 (楼主)
    2020-11-28 15:24

    You are doing one thing incorrectly - you are trying to invoke your 'ptr' function before invoking 'function'. What you were supposed to do is to pass just a pointer to 'ptr' and invoke 'ptr' using passed pointer from 'function' like that:

    void ptr(int x)
    {
        printf("from ptr [%d]\n", x);
    }
    
    int function(int a, int b , void (*func)(int) )
    {
        printf( "from function a=[%d] b=[%d]\n", a, b );
        func(a); // you must invoke function here
    
        return 123;
    }
    
    
    void main()
    {
        function( 10, 2, &ptr );
        // or
        function( 20, 2, ptr );
    }
    

    which gives:

    from function a=[10] b=[2]
    from ptr [10]
    from function a=[20] b=[2]
    from ptr [20]
    

    which is what you wanted

    for

    function(20, 20, ptr(20));
    

    to work - you would have to have sth like:

    // 'ptr' must return sth (int for example)
    // if you want its ret val to be passed as arg to 'function'
    // this way you do not have to invoke 'ptr' from within 'function'
    int ptr(int);
    int function(int, int , int);
    

提交回复
热议问题