Go Down

Topic: Libreria EEPROMex (Read 549 times) previous topic - next topic

fabpolli

Non serve il sizeof per le funzioni get e put, altre funzioni necessitano della sizeof. Chiaramente ti serve per sapere quanto spazio occupa in memoria e sapere quindi l'indirizzo da utilizzare per le informazioni successive.
In alternativa puoi seguire la metodologia spiegata nel pdf che ti ho allegato alcuni post fa e li fa tutto il compilatore, ma è meno intiutiva della libreria che stai usando, quindi direi che se tutto ti funziona per quel che ti necessita usa il sizeof per sapere dove scrivere le varie informazioni e sei arrivato al tuo scopo

manolomao

Grazie Fabpolli,per ora mi sta bene così, tanto ci pensa il compilatore e non "pesa" sulle risorse di Arduino.
Poi quando avrò del tempo ottimizzerò meglio il tutto.
Grazie dell'aiuto davvero.

fabpolli

#17
Jan 24, 2018, 03:20 pm Last Edit: Jan 24, 2018, 03:27 pm by fabpolli
Grazie Fabpolli,per ora mi sta bene così, tanto ci pensa il compilatore e non "pesa" sulle risorse di Arduino.
Giusto per correttezza la sizeof pesa sull'esecuzione del programma così come qualsiasi funzione/istruzione che la mcu deve eseguire, chiaramente in questo caso è assolutamente e completamente trascurabile il tempo necessario alla sua elaborazione.
Dalle virgolette ho capito che hai chiaro il concetto ma è a beneficio di chi in seguito potrebbe incontrare questa discussione

SukkoPera

No, sizeof() viene valutata al momento della compilazione (a meno di casi piuttosto particolari), dunque in esecuzione è come una costante.
Make your Sega MegaDrive/Genesis region-free with Arduino! https://goo.gl/X7zBcq

Guida rapida a ESP8266: https://goo.gl/kzh62E

fabpolli

No, sizeof() viene valutata al momento della compilazione (a meno di casi piuttosto particolari), dunque in esecuzione è come una costante.
Anche nel caso di array di stringhe???

SukkoPera

Certo, una stringa è un array di caratteri, e sizeof() ritorna la dimensione con cui è stato allocato l'array, non la lunghezza della stringa. Quest'ultima si ottiene con strlen() e viene ovviamente calcolata a runtime.
Make your Sega MegaDrive/Genesis region-free with Arduino! https://goo.gl/X7zBcq

Guida rapida a ESP8266: https://goo.gl/kzh62E

fabpolli

Certo, una stringa è un array di caratteri, e sizeof() ritorna la dimensione con cui è stato allocato l'array, non la lunghezza della stringa. Quest'ultima si ottiene con strlen() e viene ovviamente calcolata a runtime.
Si hai ragione ho preso una super cantonata... edito

Go Up