Wozu dient die #error-Direktive in C?

Lesezeit: 2 Minuten

Benutzer-Avatar von PHP
PHP

Was ist der #error Direktive in C? Was nützt es?

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

1403140cookie-checkWozu dient die #error-Direktive in C?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy