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

Résolu
Bilow Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   -  
Bilow Messages postés 1014 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 !
A voir également:

2 réponses

Bilow Messages postés 1014 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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
Bilow Messages postés 1014 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