• # Merci beaucoup à vous, j'ai tout compris !

    Posté par . En réponse au message L'opérateur unaire * me laisse perplexe (pointeurs sur fonctions principalement). Évalué à 0.

    #include <stdio.h>
    int f(void)
    {
     puts("youpi");
     return 0;
    }
    void * g(void)
    {
     return (void *) &f;
    }
    typedef int (*f_int_void)(void);
    void * (*ptr_g)(void);
    void main(void)
    {
     f_int_void a;
     ptr_g= &g;
     a= ( int (*) (void) ) g();
     ( ( int (*) (void) ) (*ptr_g)())();
     return a();//cool qu'on puisse dé-référencer sans étoile
    }
    
    

    J'ai toujours un avertissement que je ne comprend pas, concernant la ligne return a(); :
    attention : ‘return’ with a value, in function returning void [enabled by default]
    a() ne retourne pas void puis-ce qu'il est de type int (*) (void)...

    Bref ! merci beaucoup à tous !

    Please do not feed the trolls