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++ - Preprocessore e librerie
Forum - C/C++ - Preprocessore e librerie

Avatar
Roby94 (Member)
Guru


Messaggi: 1127
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 22:15
Lunedì, 13/10/2014
Intanto che si cerca un chiarimento nell'altro post vorrei trovare una soluzione a questo grande problema, in una libreria ho un header di questo tipo
Codice sorgente - presumibilmente C++

  1. #ifndef TWI_H
  2. #define TWI_H
  3.  
  4. #include <avr/io.h>
  5. #include <util/delay.h>
  6. #include "Buffer.h"
  7.  
  8. #ifndef TWI_RX_BUFFER_SIZE//Se la dimensione del buffer di ricezione non è stata definita
  9. #define TWI_RX_BUFFER_SIZE 32//Dimensione del buffer software di ricezione del TWI
  10. #endif
  11.  
  12. uint8_t _TWIRxBufferArray[TWI_RX_BUFFER_SIZE];//Array per il buffer di ricezione
  13.  
  14. Buffer TWIRxBuffer;//Buffer di ricezione
  15.  
  16. #endif


Il problema sta nel fatto che all'interno del file c della libreria ho necessità di usare questo BufferInit(&TWIRxBuffer, _TWIRxBufferArray, TWI_RX_BUFFER_SIZE); ma se vado a compilare la libreria il terzo argomento viene sostituito da 32, facendo cosi però impedisce all'utente di modificare questo dato ponendo un #define TWI_RX_BUFFER_SIZE xx come posso risolvere, non vorrei perdere questa funzionalità.


La programmazione è arte... fa che i tuoi script siano degni di un museo.
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 22:26
Lunedì, 13/10/2014
Ho letto e riletto ma non ho capito il problema ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1127
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 22:55
Lunedì, 13/10/2014
Scusa ho riscritto il post due volte per un errore del browser e forse la seconda volta sono stato un po superficiale.

Ho la mia bella libreria nell'header dichiaro

#ifndef TWI_RX_BUFFER_SIZE//Se la dimensione del buffer di ricezione non è stata definita
#define TWI_RX_BUFFER_SIZE 32//Dimensione del buffer software di ricezione del TWI
#endif

quindi l'utente prima di includere l'header può andare a definire la dimensione che avrà il buffer se non lo farà sarà 32.

All'interno del file C della libreria richiamo una funzione passandoli come parametro TWI_RX_BUFFER_SIZE, trattandosi di libreria pero il file C viene compilato prima del file finale dove verranno richiamate le sue funzioni. La compilazione in un primo momento rispetto al progetto finale porta il preprocessore a sostituire le definizioni TWI_RX_BUFFER_SIZE con 32, questo non va bene perché io conto sul fatto che l'utente possa cambiare questo valore nel progetto finale con un #define TWI_RX_BUFFER_SIZE xx prima dell'inclusione del file header. Dovrei trovare un metodo che permetta questa modifica post compilazione.

Da esprimere è un problema un po contorto. Chiedi se ci sono ancora punti oscuri.


La programmazione è arte... fa che i tuoi script siano degni di un museo.
PM Quote