In:
#define EMPTY
EMPTY # include <file.h>
the sequence of preprocessing tokens on the second line is
not
a preprocessing directive, because it does not begin with a
# at the start of
translation phase 4, even though it will do so after the macro
EMPTY
has been replaced
.