Bug in define a function

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; :wink:
delay(2000);

This will not give me an error! and it won’t execute. :frowning: It needs to be

Serial.println(“All lows”);
Clear(); :cold_sweat:
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.