Makra w Arduino
Makra w Arduino to konstrukcje definiowane za pomocą dyrektywy preprocesora #define
.
Za pomocą makra można zdefiniować fragment kodu lub funkcji, który zostanie podmieniony w kodzie podczas kompilacji.
Makro jako stała
#define LED_PIN 13
//const int LED_PIN = 13;
void setup() {
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, HIGH);
}
void loop() {
}
Makro jako funkcja (z parametrem)
#define CIRCLE_AREA(r) (pow(r,2)*3.14) //(r*r*3.14)
void setup() {
Serial.begin(9600);
int r = 5;
Serial.println(CIRCLE_AREA(r)); // Zostanie wstawione (a*a*3.14)
}
void loop() {
}
Uwaga!
Ponieważ makra nie są funkcjami, błędy w ich definicjach są trudniejsze do wykrycia.
Makra nie sprawdzają typów swoich argumentów, co może prowadzić do nieoczekiwanych błędów.
Zdefiniowane makra muszą być unikalne, inaczej mogą powodować błędy w kodzie, np:
#define LED_BUILTIN 13
void setup() {
const int LED_BUILTIN = 100;
Serial.begin(9600);
Serial.println(LED_BUILTIN);
}
void loop() {
}