2016-11-07 2 views
-2

gefunden Wie kann ich Verzeichnis in preprecessor Befehl ifndef#ifndef DIRECTORY Header nicht

Beispiel

#ifndef DIR/HEADERFILE_H 
#include "dir/headerfile.h" 
#endif 
+1

Verwenden Sie ein Zeichen, das der Präprozessor zulässt? '#ifndef DIR_HEADERFILE_H' –

+0

Was möchten Sie erreichen? Der Präprozessor versteht Text - keine Verzeichnisstrukturen? Sobald eine Datei '# included' ist, hat sie nicht den Dateinamen/Verzeichnis #defined. – doctorlove

+0

ES IST SEHR INTERESSANT, WARUM ICH -2 ERHALTE? Einige Kommentare zuerst? –

Antwort

1

Zur Beantwortung der Frage specicif, Sie können kein Verzeichnis in einem Präprozessoranweisung wie #ifndef verwenden: Sie können Ihre eigene Konstante ersetzt / mit _ definieren.

Die gehören Wachen in der Header-Datei oft die Form

#ifndef DIRECTORY_HEADERFILE_INCLUDED 
#define DIRECTORY_HEADERFILE_INCLUDED 

//.... contents 

#endif 

die Header enthalten, dann einfache Verwendung

#include "dir/headerfile.h" 

vor langer Zeit einige Leute suugested ein Doppelposten umfassen, oder Redundant enthalten Schutz, wobei Sie vor der #include Linie überprüft, um Dinge zu beschleunigen, wie in dieser question erwähnt. Die c2 wiki hat einige weitere Informationen.

"Good Compiler macht dieses Idiom nicht notwendig."

In jedem Fall ist die tendacny statt / zu verwenden _ ist, ein gültiges Makro zu bilden.

1

Wie in this question erklärt, nur alphanumerische Zeichen und Unterstrichen (a-z, A-Z, 0-9 und _) sind für Makro- und Konstantennamen zulässig.

#ifndef DIR_HEADERFILE_H 
Verwandte Themen