c++ - sintomas - ¿De dónde viene normalmente el-DNDEBUG?
sintomas de cancer de colon avanzado (3)
Nuestro sistema de compilación ha cambiado de alguna manera, por lo que las compilaciones optimizadas ya no están agregando -DNDEBUG a la línea de compilación. Busqué en nuestros makefiles y no encuentro esto.
Entonces, la pregunta es, ¿dónde se origina -DNDEBUG para la mayoría de las personas y cómo podría haber cambiado eso? Antes teníamos -DNDEBUG y no creo que se haya eliminado de ninguno de nuestros archivos make.
Gracias.
-William
Dado que el compilador no puede decidir por sí mismo cuándo agregar la definición NDEBUG y cuándo no, la marca siempre se establece con el archivo makefile o el archivo de proyecto (dependiendo de su sistema de compilación).
En mi experiencia, -DNDEBUG se ha pasado manualmente, es decir, los makefiles se han escrito de tal manera que la bandera se pasa cuando se construye en modo de lanzamiento.
Es realmente difícil responder esto ya que no especificaste el sistema de compilación que estás usando. Si está usando autoconf, entonces se espera que el usuario coloque -DNDEBUG en CPPFLAGS manualmente (o quizás lo esté configurando desde un archivo CONFIG_SITE que ha cambiado), o configure.ac puede configurar una variable personalizada para configurar NDEBUG , o configure.ac puede invocar AC_HEADER_ASSERT, en cuyo caso agregar --disable-assert a la invocación de configure definirá NDEBUG en config.h. Hay muchas maneras en que puede suceder.