vers l'index général de l'aide

#ifdef, #ifndef, #undef (contrôle des déclarations)

objectif

Vérifier si un identificateur a été déclaré, pas déclaré ou détruire un identificateur

compatibilité

POV-Ray 3.0 +sup.
MegaPOV (pour les tableaux)

syntaxe

#ifdef (identificateur)
 ...
#end

#ifndef (identificateur)
 ...
#end

#undef (identificateur)
 

#ifdef (Mon_Objet) : les instructions situées entre #ifdef et #end sont exécutées si Mon_Objet a été précédemment déclaré, POV-Ray "sort" après #end.

#ifndef (Mon_Objet) : les instructions situées entre #ifndef et #end sont exécutées si Mon_Objet n'a pas été précédemment déclaré, POV-Ray "sort" après #end.

#undef (Mon_Objet) : en principe, les identificateurs crées avec #declare persistent jusqu'à la fin de l'analyse du script. L'instruction #undef permet de détruire l'identificateur. Si Mon_Objet à été précédemment déclaré, après #undef (Mon_Objet), l'identificateur n'existe plus.

exemples

#ifdef

#declare Ma_Sphere = sphere {0,1}

#ifdef (Ma_Sphere)  //puisque Ma_Sphere est déjà déclaré
                    // Pov-Ray exécute la ligne suivante

  object {Ma_Sphere pigment {Red} translate <2,5,0> } //
#end
 

#ifdef #else

#ifdef (Ma_Sphere)  // Ma_Sphere n' existe pas Pov-Ray va à #else
  object {Ma_Sphere pigment {Red} translate <2,5,0> }

#else // Pov-Ray exécute la ligne suivante
  #declare Ma_Sphere= sphere {0,1 pigment {Green} translate <2,5,0> } 
#end

#ifndef

#ifndef (Ma_Sphere)  // Ma_Sphere n' existe pas alors Pov-Ray exécute la ligne suivante
  #declare Ma_Sphere= sphere {0,1 pigment {Green} translate <2,5,0> } 
#end

#undef

 		
#declare Ma_Sphere= sphere {0,1 pigment {YellowGreen} } 
// Ma_Sphere est déclarée
.....
.....
#undef (Ma_Sphere)  // Ma_Sphere n' existe plus
	

remarques

Ces instructions sont généralement utilisées dans des fichiers "include" permettant de prédéfinir des identificateurs, laissant ainsi le choix à l'utilisateur de créer ou pas les siens.

Avec MegaPOV, on peut aussi utiliser #ifdef avec les tableaux :

#ifdef (MonTableau[Position])

Rédacteur: Martial Rameaux

vers l'index général de l'aide