C / C++ Fonction avec void* en paramètre

Résolu
Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   -  
Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour !

J'ai une fonction dont le prototype est :
int nombre(void*);
Dans le main(), je dois appeler cette fonction en lui faisant passer un 'int', qu'il me retournera.

int main(){
int a = 9;
int b = nombre( .. ); // b doit valoir 9
}
int nombre(void* data){
// Traitement de 'data'
return [le nombre recu];
}

Comment faire pour faire passer la variable 'a' vers la 'b', en passant par cette fonction ?
Merci !

2 réponses

  1. Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   117
     
    J'ai trouvé tout seul =D C'est plus bête que ce que je ne pensait...
    Cet exemple n'est que très peu repris sur les autres forums, et encore moins en Français.

    int main(){
    int a = 9;
    int b = nombre( (void*)a );
    }
    int nombre(void* data){
    int retour = (int*)data;
    return retour;
    }

    Par contre, j'ai un avertissement ...
    [Warning] initialization makes integer from pointer without a cast 
    Quelqu'un a-t-il une solution ?
    Merci !
    1
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Je verrais plutôt :
      int b=nombre(&a);

      et int retour=*(int*)data;

      C'est plus logique car void* est un pointeur et cela ne devrait pas générer de warning.

      Cdlt,
      0
  2. Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   117
     
    int main(){
        int a = 9;
        int b = nombre ( &a );
        // b vaut 9 !
    }
    
    int nombre(void* data){
        int retour = *(int*)data;
        return retour;
    }

    Merci beaucoup !! Ca fonctionne parfaitement, sans avertissement ! :)
    1