Wie genau funktioniert diese Definition?
Sie steht ja nicht im Loop sondern wird nur einmal definiert.
Funktioniert aber praktisch im Loop.
Ist das ein Interrupt?
Serenifly war schneller - aber doppelt genäht hält besser
#define ist eine reine Textersetzung mit dem zusätzlichen Komfort, dass Du in den Klammern Parameter angeben kannst, die dann jeweils eingesetzt werden. An jeder Stelle, an der "errorHalt(irgenwas)" steht, wird stattdessen "{Serial.println(F(irgendwas)); while(1);}" in den Quellcode eingefügt.
wno158:
Serenifly war schneller - aber doppelt genäht hält besser
#define ist eine reine Textersetzung mit dem zusätzlichen Komfort, dass Du in den Klammern Parameter angeben kannst, die dann jeweils eingesetzt werden. An jeder Stelle, an der "errorHalt(irgenwas)" steht, wird stattdessen "{Serial.println(F(irgendwas)); while(1);}" in den Quellcode eingefügt.
Nicht mehr und nicht weniger.
Gruß Walter
Der Preprozessor arbeitet als erstes beim Kompilieren das #define ab. Es definiert Makros die :
Ohne Parameter: #define[leerzeichen]text1[leerzeichen]text2
Die Texte werden nur durch Leerzeichen getrennt. Es sind keine = oder ; am Ende erlaubt.
Mit Parameter wie in Deinem Fall: #define[leerzeichen]errorHalt(msg)[leerzeichen]{Serial.println(F(msg)); while(1);}
In diesem Fall wird der Text "msg" aus dem Text1 extrahiert und in Text2 eingefügt.