Motivo porque não ter uma macro DELETE para C ++

Existemquaisquer boas razões (exceto "macros são malvadas", talvez)NÃO usar as seguintes macros?

#define DELETE( ptr ) \
if (ptr != NULL)      \
{                     \
    delete ptr;       \
    ptr = NULL;       \
}

#define DELETE_TABLE( ptr ) \
if (ptr != NULL)            \
{                           \
    delete[] ptr;           \
    ptr = NULL;             \
}