¿Puede dar la información sobre la directiva #error
en C?directiva #error en C?
¿Qué es la directiva #error
? que uso tiene?
¿Puede dar la información sobre la directiva #error
en C?directiva #error en C?
¿Qué es la directiva #error
? que uso tiene?
Es una directiva de preprocesador que se utiliza (por ejemplo) cuando se espera que se defina uno de varios símbolos posibles -D
, pero ninguno lo es.
#if defined(BUILD_TYPE_NORMAL)
# define DEBUG(x) do {;} while (0) /* paranoid-style null code */
#elif defined(BUILD_TYPE_DEBUG)
# define DEBUG(x) _debug_trace x /* e.g. DEBUG((_debug_trace args)) */
#else
# error "Please specify build type in the Makefile"
#endif
Cuando el preprocesador golpea la directiva #error
, informará de la cadena como un mensaje de error y la compilación alto; cómo exactamente parece el mensaje de error depende del compilador.
Esa es una declaración paranoide nula ... –
¿No sería más apropiado decir que detiene el preprocesamiento? Supongo que el preproceso se puede ver como un paso en la compilación, pero definitivamente se puede hacer como un paso separado, y se realiza internamente como un paso separado, por lo que falla/informa un error fatal antes que un error de compilación. – RastaJedi
es posible que tenga código no válido, pero es algo como ...
#if defined USING_SQLITE && defined USING_MYSQL
#error You cannot use both sqlite and mysql at the same time
#endif
#if !(defined USING_SQLITE && defined USING_MYSQL)
#error You must use either sqlite or mysql
#endif
#ifdef USING_SQLITE
//...
#endif
#ifdef USING_MYSQL
//...
#endif
Si compilador compila esta línea entonces se muestra un error fatal del compilador: y detener aún más la compilación del programa:
#include<stdio.h>
#ifndef __MATH_H
#error First include then compile
#else
int main(){
float a,b=25;
a=sqrt(b);
printf("%f",a);
return 0;
}
#endif
Output:compiler error --> Error directive :First include then compile
Este parece más como una pregunta para http://stackoverflow.com – jmort253