Ich habe eine C Datei, die eine bestimmte Header-Datei benötigt. Wenn diese Headerdatei nicht existiert, möchte ich, dass der Präprozessor eine bestimmte Warnung ausgibt. Etwas wie:
%Vor%Ist das mit dem C Präprozessor möglich?
Sie könnten immer überprüfen, ob das Makro #define X
aus der enthaltenen Datei ... definiert ist:)
__has_include("header name")
Direktive hat, die einwandfrei funktioniert, um das zu tun, was du brauchst :)
Vielleicht möchten Sie zuerst prüfen, ob die Direktive verfügbar ist, indem Sie #if defined(__has_include)
aufrufen
Nein, das ist nicht möglich. Alles, was Sie tun können, ist #include
den Header zu versuchen, und wenn es nicht existiert, wird der Compiler Ihnen einen Fehler geben.
Eine Alternative wäre ein Tool wie GNU autoconf . autoconf erzeugt ein Shell-Skript namens configure
, das Ihr Build-System analysiert und feststellt, ob bestimmte Header-Dateien installiert sind oder nicht, und es generiert eine Header-Datei, die aus Makros besteht, die diese Informationen anzeigen.
Zum Beispiel könnte es HAVE_SYS_TIME_H
definieren, wenn Ihr Build-System den Header <sys/time.h>
enthält, so dass Sie dann Code schreiben können wie:
Tags und Links include c-preprocessor