#define LED 13
#define prnt Serial.print
#define prntln Serial.println
#define setPin digitalWrite
#define getPin digitalRead
#define LITERAL(...) "" #__VA_ARGS__
/* ---------------------------------- */
/*
typedef void (*foobar)() fubarfn;
void Fun(fubarfn& baz){
fubarfn = baz;
baz();
}
*/
int Default = 111;
int Variable = 42;
// function with pointer as argument
void FunByRef(int& iPtr){
iPtr++;
}
void FunByRefDef(int& iPtr=Default){
prntln(iPtr);
}
/* ---------------------------------- */
void setup() {
Serial.begin(9600);
int n,x = 1; // declare vars
prnt(LITERAL(n)),prnt(": ");prntln(n);
FunByRef(n);
prnt(LITERAL(n)),prnt(": ");prntln(n);prntln();
prnt(LITERAL(x)),prnt(": ");prntln(x);
FunByRef(x);
prnt(LITERAL(x)),prnt(": ");prntln(x);prntln();
/* - - - - - - - - - - - - - - - - - */
FunByRefDef();
FunByRefDef(Variable);
}
/* ---------------------------------- */
void loop() {
delay(1);
}