Beschreibungen und Beispiele zum Raytracer POV-Ray von Friedrich A. Lohmüller
    Bedingte Anweisungen - Anwendungen -
English English English

Home
- POV-Ray Tutorial

  - Bedingte
     Anweisungen

  Verzweigungen
   #if(...) ... #else ... #end
    - in Schleifen
    - in Macros
    - in Animationen
    - Ein-/Ausschalten von Teilen
   #switch(...) #case(..) ...
          #range(..) ... #end
    - Auswahl-Listen

  Existenz-Überprüfungen
   #ifdef(...) #ifndef(...)
    >Check in Include-Dateien
    - Defaults in Include-Dateien

  Schleifen
  Prechecked, Postchecked,
  Count-controlled, Early-Exit
   #while(...)... #end
   #for(...)... #end
    - Beispiele:
    - Schleifen in POV-Ray
    - Schleifen, Sinus, Kosinus
                                       

Existenz-Überprüfungen
zur Verhinderung mehrfachen Lesens einer Include-Datei

Zwei Beispiele für den Gebrauch von "#ifndef" in Include-Dateien:
1. Verhindern des mehrfachen Einbindens einer Include-Datei.
Durch das Deklarieren einer globalen Variablen
(hier: MyIncludeFile_inc_Temp, wenn der Include-Dateiname MyIncludeFile.inc ist.) läßt sich mit "#ifndef" feststellen, ob diese Include-Datei schon mal gelesen wurde. In diesem Fall kann der gesamte Inhalt übersprungen werden, da er bereits bekannt ist.

2. Sicherstellen, dass eine in einer Include-Datei benötigte andere Include-Datei gelesen wurde und dass diese nicht wiederholt eingebunden wird:
Die folgende Technik ist möglich bei eingebundenen Include-Dateien, welche ihrerseits eine entsprechende global deklarierte Variable (siehe oben) besitzen.
Es läßt sich in Include-Dateien mit der Abfrage der Existenz der entsprechenden globalen Variablen der benötigten anderen Include-Datei erreichen, dass eine benötigte Include-Datei auch geladen wird, wenn die aufrufende Szenen-Datei diese noch nicht geladen hat. Die Abfrage mit "#ifndef" vermeidet man zugleich auch auch, dass die entsprechende Datei ein zweites Mal (überflüssigerweise) eingebunden wird, wenn sie bereits durch die aufrufende Szenen-Datei oder durch andere Include-Dateien gelesen wurde.

Vermeiden des mehrfachen Lesens einer Include-Datei:
// include file "MyIncludeFile.inc"
#ifndef( MyIncludeFile_inc_Temp )
#declare MyIncludeFile_Inc_Temp = version;
#version 3.5;
//----------------------------------------

Hauptteil der Include-Datei


//----------------------------------------
#version MyIncludeFile_Inc_Temp;
#end // end of "#ifndef( ... )"
//-------------------- end of include file
Sicherstellen, dass eine benötigte Include-Datei gelesen wurde und Vermeiden des Mehrfach-Lesens bereits eingebundener Include-Dateien:
 
//---------------------------//
#ifndef(  Shapes_Inc_Temp)
#include "shapes.inc"
#end
//---------------------------//

top
 
© Friedrich A. Lohmüller, 2010
homepage:www.f-lohmueller.de