Confío en NDEBUGque es el único cuyo comportamiento está estandarizado en compiladores e implementaciones (consulte la documentación para la macro de aserción estándar). La lógica negativa es un pequeño salto de velocidad de legibilidad, pero es un idioma común al que puede adaptarse rápidamente.
Confiar en algo así _DEBUGsería confiar en un detalle de implementación de un compilador particular y la implementación de la biblioteca. Otros compiladores pueden o no elegir la misma convención.
La tercera opción es definir su propia macro para su proyecto, lo cual es bastante razonable. Tener su propia macro le brinda portabilidad entre las implementaciones y le permite habilitar o deshabilitar su código de depuración independientemente de las afirmaciones. Aunque, en general, desaconsejo tener diferentes clases de información de depuración que estén habilitadas en el momento de la compilación, ya que causa un aumento en el número de configuraciones que tiene que construir (y probar) para obtener un beneficio posiblemente pequeño.
Con cualquiera de estas opciones, si usa código de terceros como parte de su proyecto, tendrá que saber qué convención usa.