EMPTY_MACRO_SLOT
const EmptySlot EMPTY_MACRO_SLOT @builtin = null;EMPTY_MACRO_SLOT is a value used for implementing optional arguments for macros in an efficientway. It relies on the fact that distinct types are not implicitly convertible.
You can use `@is_empty_macro_slot()` and `@is_valid_macro_slot()` to figure out whether
the argument has been used or not.
An example:
```c3
macro foo(a, #b = EMPTY_MACRO_SLOT)
{
$if @is_valid_macro_slot(#b):
return invoke_foo2(a, #b);
$else
return invoke_foo1(a);
$endif
}