Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - [Risolto]Problema con le struct
Forum - C/C++ - [Risolto]Problema con le struct

Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 4:51
Domenica, 21/04/2013
Ciao a tutti, ho un problema con le struct!
Sul mio OS vorrei fare un Log simile a quello di Android

Codice sorgente - presumibilmente Plain Text

  1. Log.i("Messaggio");
  2. Log.d("Messaggio");
  3. Log.w("Messaggio");
  4. Log.e("Messaggio");



e le struct mi sono sembrate la strada più facile, ma forse mi sbagliavo!
Il codice:

Log.h
Codice sorgente - presumibilmente C++

  1. struct LOG
  2. {
  3.         void (*v_func1)(char* message);
  4.         void (*v_func2)(char* message);
  5.         void (*v_func3)(char* message);
  6.         void (*v_func4)(char* message);
  7. };
  8.  
  9. extern struct LOG Log;



Log.c
Codice sorgente - presumibilmente C/C++

  1. void i (char* message)
  2. {
  3.   set_color(GREEN);
  4.   printk("%s", message);
  5.   set_color(WHITE);
  6. }
  7.  
  8. struct LOG Log =
  9. {
  10.   i( /*l'errore viene da qui*/ char* message),
  11.   d( /*l'errore viene da qui*/ char* message),
  12.   w( /*l'errore viene da qui*/ char* message),
  13.   e( /*l'errore viene da qui*/ char* message),
  14. };



E in fase di compilazione mi esce questo errore:
Codice sorgente - presumibilmente Plain Text

  1. log.c:56:5: error: expected expression before ‘char’



cosa può essere? Io le struct le ho usate(fino ad ora) solo con le stringhe o le funzioni senza parametri!
Grazie :k:

Ultima modifica effettuata da LittleHacker il 21/04/2013 alle 15:26


Android User :)

MudStorm OS Source GitHub: https://github.com/Piso94/MudStorm-OS
PM Quote
Avatar
ZioCrocifisso (Member)
Pro


Messaggi: 135
Iscritto: 06/03/2013

Segnala al moderatore
Postato alle 9:13
Domenica, 21/04/2013
Per inizializzare la struct devi passargli un puntatore a funzione, senza specificare i parametri, e inoltre se chiami i campi v_funcN dovrai usare Log.v_funcN, non Log.i.

Codice sorgente - presumibilmente C++

  1. struct LOG
  2. {
  3.         void (*i)(char* message);
  4.         void (*d)(char* message);
  5.         void (*w)(char* message);
  6.         void (*e)(char* message);
  7. };
  8.  
  9. extern struct LOG Log;



Codice sorgente - presumibilmente C++

  1. void i_func (char* message) { [...]
  2.  
  3. struct LOG Log =
  4. {
  5.         &i_func,
  6.         &d_func,
  7.         &w_func,
  8.         &e_func
  9. };
  10.  
  11. int main(int argc, char **argv)
  12. {
  13.         Log.i("a");
  14. [...]



PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 15:26
Domenica, 21/04/2013
@ZioCrocifisso: :love: Grazie mille, sia per il codice ma anche per la spiegazione :k:


Android User :)

MudStorm OS Source GitHub: https://github.com/Piso94/MudStorm-OS
PM Quote