Was ist der #error
Direktive in C? Was nützt es?
Wozu dient die #error-Direktive in C?
PHP
Es ist eine Präprozessordirektive, die (zum Beispiel) verwendet wird, wenn Sie eine von mehreren möglichen erwarten -D
Symbole definiert werden, aber keines ist.
#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
Wenn der Präprozessor auf die trifft #error
Direktive wird die Zeichenfolge als Fehlermeldung ausgegeben und die Kompilierung angehalten; wie genau die Fehlermeldung aussieht, hängt vom Compiler ab.
-
Wäre es nicht angemessener zu sagen, dass die Vorverarbeitung angehalten wird? Ich denke, die Vorverarbeitung kann als Schritt bei der Kompilierung angesehen werden, aber sie kann definitiv als separater Schritt durchgeführt werden und wird intern als separater Schritt ausgeführt, sodass ein schwerwiegender Fehler früher als ein Kompilierungsfehler fehlschlägt / gemeldet wird.
– RastaJedi
19. April 2016 um 19:57 Uhr
Ich habe möglicherweise einen ungültigen Code, aber es ist so etwas wie …
#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
-
der Code funktioniert gut mit dieser kleinen Korrektur #if !(defined USING_SQLITE || defined USING_MYSQL)
– Alvpjh
21. September 2020 um 18:49 Uhr
Wenn der Compiler diese Zeile kompiliert, zeigt er einen schwerwiegenden Compilerfehler: und stoppt die weitere Kompilierung des Programms:
#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