Salve a tutti
sono nuovo di questo forum, scrivo perché sto facendo alcune prove con il C, strutture e puntatori e non riesco a risolvere alcuni errori del compilatore.
il compilatore che utilizzo è gcc su windows 10, premetto che non posterò tutto il codice perché è lunghetto, posterò solo le parti dove ho gli errori, ma se necessario lo posto completo.
poi, prima che vi "arrabiate" per gli errori che avrò fatto, premetto che sto studiando e che questi sono dei test per capire bene il funzionamento delle struct e dei puntatori
ho definito la seguente struttura
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
typedef struct _Rpi
{
char *cNumbPort; //Numero porta
bool bValLetto; //Valore letto dall'ingresso
bool bValScritto; //Valore che deve essere scritto nell'uscita
bool bCreaPorta; //Abilita comando creazione porta
bool bDistruggiPorta; //Abilita comando distruzione porta
bool bPortaCreata; //Porta creata
bool bInOut; //Definisce se la porta è ingresso o uscita (1 ingresso, 0 uscita)
} Rpi;
di seguito ho messo i prototipi di funzione
void CreaPorta(Rpi *Port);
bool ManipolazioneFile(char *cNumPorta, int InitPorta);
e poi main e le funzioni vere e proprie
void main()
{
char *cLedA;
Rpi Led_A;
...
strcpy(cLedA, "4");
....
Led_A.cNumbPort = cLedA; //Definisce numero uscita per il led A
Led_A.bInOut = 0; //Definisce Uscita
Led_A.bCreaPorta = 1; //Abilita creazione porta
...
if ((Led_A.bCreaPorta)&&(!Led_A.bPortaCreata)) CreaPorta(&Led_A);
...
}
bool ManipolazioneFile(char *cNumPorta, int InitPorta)
{
/* - - Dichiarazione variabili locali - - */
FILE *handle;
bool valore;
/* Crostruzione della stringa per apertura file */
if (InitPorta == 0) strcpy(strPath, "/sys/class/gpio/export"); // Creazione porta GPIO
else if (InitPorta == 1) strcpy(strPath, "/sys/class/gpio/unexport"); // Rilascio porta GPIO
else AddStringa(cNumPorta, InitPorta); // Formazione stringa per comando
/* Esecuzione comando sul file di definizione hardware */
if (InitPorta == 30) handle = fopen(strPath,"r"); // Lettura input e su file
else handle = fopen(strPath,"w"); // Scrittura output e su file
switch (InitPorta)
{
case 0: // creazione/rilascio porta GPIO
case 1: fprintf(handle, cNumPorta);
valore = 0;
break;
case 10: // definisce porta GPIO in ingresso
fprintf(handle,"in");
valore = 0;
break;
case 20: // definisce porta GPIO in uscita
fprintf(handle,"out");
valore = 0;
break;
case 30: // Lettura ingressi
fscanf(handle,"%d",&valore);
break;
case 40: // Scrittura 0 sull'uscita
fprintf(handle, "0");
valore = 0;
break;
case 50: // Scrittura 1 sull'uscita
fprintf(handle, "1");
valore = 0;
break;
default: // Fine step
valore = 0;
break;
}
/* Chiusura file dopo modifica */
fclose(handle);
/* Ritorno funzione */
return valore;
}
void CreaPorta(Rpi *Port)
{
/* --- Dichiarazione variabili locali --- */
bool val;
char *cPorta;
/* copia numero porta da eseguire operazioni */
cPorta = Rpi.cNumbPorta;
/* Chiamata a funzione per apertura file */
val = ManipolazioneFile(cPorta, 0);
Rpi.bPortaCreata = 1;
}
ottengo questi errori dal compilatore
C:\Users\it14004582\Dropbox\Projects\Raspberry>gcc in_out_ver4.c
in_out_ver4.c: In function 'CreaPorta':
in_out_ver4.c:192:12: error: expected expression before 'Rpi'
cPorta = Rpi.cNumbPorta;
^~~
in_out_ver4.c:196:6: error: expected identifier or '(' before '.' token
Rpi.bPortaCreata = 1;
^
Grazie per le risposte