Fonction void

Résolu/Fermé
poparnassus Messages postés 426 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 25 décembre 2019 - Modifié par poparnassus le 21/04/2016 à 21:28
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 22 avril 2016 à 13:18
Bonjour,
Dans mon fichier main, j'appelle une fonction
void initialisation_serveur( serveur *serveur)
qui est dans fichier reseau.c
Tous mes fichier .c ont en include un fichier prototype.h dans le quelle je defini mes structure etc

void initialisation_serveur(serveur *serveur)
{
ping(&wt_SDL);
// Autre instruction
}


Je vois pas comment faire pour que ma fonction initialisation fonctionne

J'ai essayer ca
main.c
initialisation_serveur(&serveur, &wt_SDL);

reseau.c
void initialisation_serveur(serveur *serveur, wt_SDL *wt_SDL)
{
    ping(&wt_SDL);

    //creation socket

}

De cette maniere mon ping est executer mais le programme plante par la suite

J'ai cette erreur dans mon compilateur :
C:\Users\Nico\Desktop\Projet C\6wd_SDL2_test\reseau.c|5|warning: passing argument 1 of 'ping' from incompatible pointer type|

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
21 avril 2016 à 22:24
Bonsoir,
j'appelle une fonction
void initialisation_serveur( serveur *serveur)
Pour appeler une fonction, c'est : initialisation_serveur(&serveur);
Là c'est plutôt un prototype de fonction.

Tous mes fichier .c ont en include un fichier prototype.h dans le quelle je defini mes structure etc

void initialisation_serveur(serveur *serveur)
{
ping(&wt_SDL);
// Autre instruction
}

On ne définit pas de fonction dans les .h. On déclare juste les prototypes.
Donc, ce bout est à mettre dans un .c

initialisation_serveur(&serveur, &wt_SDL);
Ce n'est pas cohérent. Là tu mets 2 arguments, alors que plus haut il y avait 1 seul argument.
0
poparnassus Messages postés 426 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 25 décembre 2019 30
Modifié par poparnassus le 21/04/2016 à 22:55
main.c
#include "prototype.h"
int main(int argc, char** argv)
{
initialisation_reseau(&wt_SDL);
}


reseau.c
#include "prototype.h"

void initialisation_reseau(wt_SDL *wt_SDL)
{

    ping(&wt_SDL);

    //creation socket et initialisation variable et structure

}

void ping(wt_SDL * wt_SDL)
{
    char commande[50];

    strcpy (commande, "ping 192.168.50.17 -n 2");

    SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_WARNING,"ATTENTION","Le test de la disponibilite du raspberry va demarrer, appuyer sur OK pour commencer",NULL);

    int retour = system (commande);


     if(retour == 1)
    {

    }
    else
    {

    }

}



prototype.h
void initialisation_reseau(wt_SDL *wt_SDL);
void ping(wt_SDL *wt_SDL);

0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
21 avril 2016 à 22:47
Dans ton .h
void initialisation_reseau(wt_SDL *wt_SDL);
Cela signifie que ta fonction ne renvoie rien.

Dans ton .c
int initialisation_reseau(wt_SDL *wt_SDL)
Tu indiques que la fonction renvoie un int.

Il faut que ça soit cohérent.
0
poparnassus Messages postés 426 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 25 décembre 2019 30
Modifié par poparnassus le 21/04/2016 à 22:56
j'ai corriger
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
22 avril 2016 à 13:18
Et ? C'est bon ça fonctionne ?
0