Go Down

Topic: Armazenar temperatura máxima e minima (Read 7615 times) previous topic - next topic

FernandoGarcia

#15
Sep 01, 2014, 05:52 pm Last Edit: Sep 01, 2014, 06:13 pm by FernandoGarcia Reason: 1
Retiro o que disse sobre o #define tinha visto em algum lugar que isto ocupava 1 byte mas, agora encontrei isto:

Quote

#define is a useful C component that allows the programmer to give a name to a constant value before the program is compiled. Defined constants in arduino don't take up any program memory space on the chip. The compiler will replace references to these constants with the defined value at compile time.


http://arduino.cc/en/Reference/Define

Obrigado Bubulindo pela explicação.

BTW, daqui que tirei a conclusão que const byte e #define ocupam o mesmo espaço, visto que a variável byte ocupa 1 byte.
Talvez tenha entendido errado.

http://forum.arduino.cc/index.php?topic=227860.msg1650552#msg1650552


Quando me ensinaram a programar, focaram imenso o momento de criar uma variável. Não deve ser um acto de meter um tipo à  sorte, mas sim de pensar e planear o que a variável vai fazer e que valores vai conter e depois escolher o menor tipo de dados que dê para o fazer.
Atenção também deve ser dada ao facto da variável ser signed ou unsigned já que isso faz uma diferença enorme (2X para ser mais preciso).
Tudo isto é feito de forma a aproveitar ao máximo a memória. Para quem programa em computadores, este foco no uso de memória provavelmente não será muito importante, mas para quem programa microcontroladores a memória é efectivamente um dos recursos mais importantes e se não houver cuidado... pufft.

Agora de repente não tenho aqui o site ou thread, mas lembro-me de haver quem já tenha estudado a diferença entre a definição de variáveis const e definir valores com um #define.

Se bem me lembro, a memória usada entre usar #define e const era exactamente a mesma, querendo dizer portanto que o mecanismo é o mesmo, ou seja, aquando da compilação essa variável ou define é substituido pelo valor que foi definido.

Assim sendo, definir int ou byte não fará diferença na pegada de memória. Mas posso estar errado, nada como testar e ver. :)






luisilva

@FernandoGarcia: Não compreendo em que medida é que o que eu sugiro é igual ao que foi sugerido por si.

Como disse esta discussão aqui nesta thread não faz o mínimo sentido, porque para além de estar completamente "off-topic", como o OP é bastante inexperiente, penas estamos a confundi-lo mais. Assim, logo após ter feito o comentário aqui, fiz algumas experiências e publiquei as minhas conclusões aqui:
http://forum.arduino.cc/index.php?topic=264244

Por isso se quiserem dar uma olhadela e fazer algum comentário, são bem-vindos.

Go Up