Go Down

Topic: Ottimizzare la gestione delle stringhe (Read 10732 times) previous topic - next topic

nid69ita

Per semplificare per le mie librerie facevo così: una funzione con nome particolare e con parametro anche il size, poi una macro con il nome della funzione da usare e il sizeof() "nascosto".
Esempio (che richiede un vettore come parametro):
Code: [Select]
#define MIAFUNZ(par1) _MIAFUNZ(par1, (sizeof(par1)/sizeof(par1[0])) )
void _MIAFUNZ(char *pStr, byte pSize)
{
}
my name is IGOR, not AIGOR

Maurotec

@nid
Si piace anche a me come soluzione.
Io ho fatto di meglio (per me), la lista dei parametri con define

Code: [Select]
#define CHAR_POINTER_PAR(par1) par1, (sizeof(par1)/sizeof(par1[0]))
#define CHAR_POINTER_T (char *pStr, byte pSize)

char buffer[10];

void allFun(CHAR_POINTER_T)
{

}

// call
allFun( CHAR_POINTER_PAR(buffer) );


Non so se si capisce il senso l'ho scritto di fretta.

Ciao.

nid69ita

Si, si capisce (almeno per me). Bella idea non ci avevo pensato.  :D
my name is IGOR, not AIGOR

Maurotec

@lock

Già e inoltre è subdolo, machiavellico, ecc.
Però non lo farei a tutto spiano in una libreria di funzione, ma solo nell'applicazione.
Se è in una libreria deve essere fatto bene e ben documentato, e sarebbe il caso di estenderlo a tutta la
libreria, diversamente si manca di coeerenza.

Si fa quel che si può, ci sia arrangia e nessuna soluzione è perfetta.
Ciao.

leo72


@nid
Si piace anche a me come soluzione.
Io ho fatto di meglio (per me), la lista dei parametri con define

Carina come idea, così tu passi l'array e non te ne importa sapere quante celle ha, ci pensa poi il tuo codicillo a calcolarne la dimensione ed a ri-passarlo alla funzione stessa.

Go Up