Fonction void

Résolu
poparnassus Messages postés 462 Statut Membre -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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
    1. poparnassus Messages postés 462 Statut Membre 31
       
      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
    2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      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
    3. poparnassus Messages postés 462 Statut Membre 31
       
      j'ai corriger
      0
    4. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Et ? C'est bon ça fonctionne ?
      0