2010-02-08 42 views

Respuesta

50

colocar en cualquier lugar:

#ifndef DEBUG 
#error Only Debug builds are supported 
#endif 
3

Si simplemente desea informar de un error:

#ifdef RELEASE 
    #error Release mode not allowed 
#endif 

funcionará con la mayoría de los compiladores.

4

Puede usar una directiva error para eso. El siguiente código generará un error en tiempo de compilación si DEBUG no está definido:

#ifndef DEBUG 
#error This is an error message 
#endif 
+0

Lo siento, mezclar pragma y error mientras se escribe. Corregido en respuesta. –

13

C proporciona una declaración #error, y la mayoría de los compiladores añadir una declaración #warning. The gcc documentation recommends para citar el mensaje.

+1

@Antonio A la derecha, no hay ninguna recomendación [más] allí. Reemplacé el enlace con uno por gcc doc. – philant

6

Tal vez algo más sofisticado, pero es solo copiar & pegar de soluciones anteriores. :-)

#ifdef DEBUG   
    #pragma message ("Debug configuration - OK") 
#elif RELEASE 
    #error "Release configuration - WRONG" 
#else 
    #error "Unknown configuration - DEFINITELY WRONG" 
#endif 

P.S. También hay una forma de generar advertencia. Crear labe no referenciado como

HereIsMyWarning: 

y no hacer referencia a ella. Durante la compilación obtendrá advertencia como

1>..\Example.c(71) : warning C4102: 'HereIsMyWarning' : unreferenced label 
1

de GCC y Sonido metálico (y probablemente cualquier compilador que admita la función _Pragma) se puede definir una macro:

#if ! DEBUG 
#define FIX_FOR_RELEASE(statement) _Pragma ("GCC error \"Must be fixed for release version\"") 
#else 
#define FIX_FOR_RELEASE(statement) statement 
#endif 

Puede utilizar esta macro para cortes temporales , por ejemplo, para evitar el código que un compañero de trabajo aún no ha escrito, para asegurarse de que no se olvide de corregirlo una vez que desee liberar una compilación al público. De cualquier

FIX_FOR_RELEASE() 
// Code that must be removed or fixed before you can release 

o

FIX_FOR_RELEASE(statement that must be removed or fixed before you can release); 
1

En Code :: Blocks, si no desea que el modo de lanzamiento, se puede eliminar el modo de lanzamiento. Para hacer esto, haga clic en el menú Proyecto, seleccione Propiedades ... y en la pestaña Objetivos de compilación puede hacer clic en Liberar y luego hacer clic en el botón Eliminar. Eliminar el modo Release solo lo hace para el proyecto actual, por lo que aún puede usarlo en otros proyectos.

De lo contrario, si realmente desea utilizar el preprocesador, se puede hacer esto:

#ifdef RELEASE 
#error "You have to use the Debug mode" 
#endif 
Cuestiones relacionadas