Does this code lead to well-defined behavior? If no, then which rules / statements of C standard are violated? How exactly they are violated?
Code #1:
#define B(a1, ...) a1
int main ( void )
{
return B(0);
}
Code #2:
#define M1(...) M2(0
#define M2(a) a
int main ( void )
{
return M1(0));
}