Code zusammenführen und vereinfachen



  • Hallo,

    ich habe folgenden Code den ich gerne zusammenführen möchte. Die displayInfo Methode soll also mit in die printInfo Methode.

    double displayInfo (char* InterfaceName, struct wireless_info*  Info) {
      // Display the currently used/set bit-rate 
      if (Info->has_bitrate) {
        return Info->bitrate.value / MEGA;
      }  
    }
    
    double printInfo (char* InterfaceName) {
      struct wireless_info  Info;
    
      if (getInterfaceInfo (InterfaceName, &Info) < 0) {
        fprintf (stderr, "%-8.8s  no wireless extensions.\n\n", InterfaceName);
        return -1;
      } 
     return displayInfo (InterfaceName, &Info);  
    }
    

    Ich habe es folgendermaßen probiert:

    double printInfo (char* InterfaceName) {
      struct wireless_info  Info;
    
      if (getInterfaceInfo (InterfaceName, &Info) < 0) {
        fprintf (stderr, "%-8.8s  no wireless extensions.\n\n", InterfaceName);
        return -1;
      } 
       if (Info->has_bitrate) {               //<---
         return Info->bitrate.value / MEGA;   //<---
      }    
    }
    

    Bekommen dann aber die Fehlermeldung, vorher lief es fehlerfrei durch:

    In function double printInfo(char*)': error: base operand of->' has non-pointer type wireless_info' error: base operand of->' has non-pointer type `wireless_info'

    Wer kann mir helfen? Was habe ich falsch gemacht???

    Vielen Dank!



  • Info ist ja kein Pointer, also

    if (Info.has_bitrate) {               //<---
         return Info.bitrate.value / MEGA;   //<---
    

    Abgesehen davon:
    Warum fprintf und keine Streams ?
    Das struct vor der Deklaration einer Instanz von wireless_info kannst du in C++ weglassen.
    oder soll das C sein?



  • Danke schön, jetzt geht's!



  • was ist mit der funktion displayInfo(), wenn Info->hasBitrate==false ist? dann gibt die funktion ja gar keinen wert zurück 😕


Anmelden zum Antworten