An identifier currently defined as an
object-like macro (see below) may be redefined by another
#define
preprocessing directive provided that the second definition is an
object-like macro definition and the two replacement lists
are identical, otherwise the program is ill-formed
. Likewise, an identifier currently defined as a
function-like macro (see below) may be redefined by another
#define
preprocessing directive provided that the second definition is a
function-like macro definition that has the same number and spelling
of parameters,
and the two replacement lists are identical,
otherwise the program is ill-formed
.