C - domanda sulle Struct

di il
6 risposte

C - domanda sulle Struct

Ciao ,

Nello studiare C/C++ mi sono imbattuto in questo problema
Vorrei:
- creare una struct sotto main() e quindi Non globale
- Passare la struct come riferimento
- Ritornare la struct per leggerne il valore tramite una struct e non una char o altro tipo

Quindi vorrei operare su una struct senza che essa sia globale ed utilizzarla come Flags ovvero
come registro di bit

Fin'ora il codice è incompleto sono riuscito solo a ritornare una struct ma non locale. Infatti se la inserisco sotto main
non funziona

C:\SDL-devel-1.2.15-mingw32\tmp\main.c:21:1: error: unknown type name 'strFlags'
C:\SDL-devel-1.2.15-mingw32\tmp\main.c: In function 'Input2':
C:\SDL-devel-1.2.15-mingw32\tmp\main.c:23:5: error: unknown type name 'strFlags'
C:\SDL-devel-1.2.15-mingw32\tmp\main.c:25:14: error: request for member 'pwm' in something not a structure or union
Process terminated with status 1 (0 minutes, 0 seconds)
5 errors, 1 warnings (0 minutes, 0 seconds)

#include <stdio.h>
#include <stdlib.h>

typedef struct Flags{
        unsigned char lcd: 1;
        unsigned char pwm: 1;
        } strFlags;

strFlags Input2();

int main()
{
     strFlags key;

       key = Input2();


    return 0;
}
strFlags Input2(){

    strFlags bitt;
    
         bitt.pwm = 1;
         return bitt;
}
Potete dirmi come posso fare ?
grazie in anticipo

6 Risposte

  • Re: C - domanda sulle Struct

    Ti dirò che non ho capito molto di quello che vuoi dire ...

    Cerca di spiegarti meglio ...
  • Re: C - domanda sulle Struct

    Si ok , in sintesi quello che vorrei fare è passare una struct ad una funzione e ritornare una struct con valori aggiornati da questa stessa funzione.
    Ogni membro della struct deve essere di tipo un bit
    Il bit interessato lo devo leggere in main()
  • Re: C - domanda sulle Struct

    Puoi passare la struttura con un puntatore, ad esempio

    void func(strFlags *s)

    e non hai bisogno di restituirla perché le modifiche saranno effettuate su quella passata
  • Re: C - domanda sulle Struct

    Perfetto poi me la cavo con
    
    (*s).pwm = 1;
    
    Ora la seconda parte della domanda era questa.Ma scrivendo mi sono accorto che probabilmente non ha senso quello che chiedo e premetto che sto studiando solo ora i puntatori
    ovvero:

    La struct deve essere obbligatoriamente inserita fuori dalla main() per funzionare?
    Posso renderla locale inserendola dentro la main()?
    sento di aver chiesto una cavolata
  • Re: C - domanda sulle Struct

    Certo che la struttura può essere locale, esattamente come l'avevi scritto prima
    
    int main()
    {
        strFlags key;  // Struttura locale al main
    
        f(&key);  // la passi per puntatore alla funzione f
    
        ... // qui il valore degli elementi della struttura è modificato
    }
    
    
    void f(strFlags *s)
    {
       s->pwm = 1;  // la usi nella funzione
    }
    
  • Re: C - domanda sulle Struct

    Perfetto ho capito !Grazie mille Oregon
Devi accedere o registrarti per scrivere nel forum
6 risposte