I define a function say; Clear()
void Clear() // Sends 8 low pulses
{
for (int i = 0; i < 8; i++)
{OutLow();}
}
Then I want to call that function
Serial.println("All lows");
Clear;
delay(2000);
This will not give me an error! and it won't execute. It needs to be
Serial.println("All lows");
Clear();
delay(2000);
Serial.println("All lows");
Clear;
delay(2000);
is valid C/C++ as one is allowed to use the name of the function in expressions.
There are code tool checkers like - lint (?) - that detect the "wrong" usages as in your sample.
The name of a function is a pointer to its start point in memory
This allows you to make arrays of functions which can be used e.g. in a menu system.
Or determine the size (to some extend, not trivial to do right)
void setup()
{
Serial.begin(115200);
Serial.println("Start ");
}
void loop()
{
Serial.println( (char*) setup - (char*) loop);
delay(1000);
}
prints 17
which is about the size of loop in bytes.