As Viorel pointed out, bitand is a synonym for & and may be
replaced via a simple macro substitution.
bitand
https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/bitand?view=msvc-170
Bitwise AND operator: &
https://learn.microsoft.com/en-us/cpp/cpp/bitwise-and-operator-amp?view=msvc-170
When you write bitand(d, e) you are NOT writing a function call.
You are writing a parenthesized expression (d, e). The comma in
this expression is used as the comma operator, not as a separator.
Comma Operator: ,
https://learn.microsoft.com/en-us/cpp/cpp/comma-operator?view=msvc-170
The rules for this operator mean that the value of this expression
is the value of the second item which is e.
So bitand(e) is evaluated, which is identical to &(e) which yields
the address of e. When you prefix the asterisk you dereference this
address which yields the value in e.
bitand(d, e)
is
&(d, e)
is
&(e)
is
address of e
and
*&(e)
equals 37, the value in e.