#ifdef

#ifdef — Lecture de code conditionnelle.

Description

Les macros sont des substitutions de texte qui sont faites dans l'orchestre lors de sa lecture. Le système de macro de l'orchestre de Csound est très simple, et il utilise les caractères # et $ pour définir et appeler les macros. Il permet d'économiser de la frappe et peut conduire à une structure cohérente dans un style consistant. Il est similaire, tout en étant indépendant, au système de macros du langage de partition.

Si une macro est définie alors #ifdef peut incorporer du texte dans un orchestre jusqu'au prochain #end.

Syntaxe

#ifdef NOM
....
#else 
....
#end 

Exécution

Noter que l'on peut imbriquer les #ifdef, comme dans le langage du préprocesseur C.

Exemples

Voici un exemple simple de cette insertion conditionnelle.

Exemple 12. Exemple simple de la forme #ifdef.

#define debug ##
     instr 1
#ifdef debug
     print "calling oscil"
#end
     a1   oscil 32000,440,1
     out  a1
     endin


Voici un autre exemple de l'insertion conditionnelle #ifdef. Il utilise le fichier ifdef.csd.

Exemple 13. Exemple détaillé de la forme #ifdef.

Voir les sections Audio en temps réel et Options de la ligne de commande pour plus d'information sur l'utilisation des options de la ligne de commande.

<CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
-odac     ;;;realtime audio out
;-iadc    ;;;uncomment -iadc if realtime audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o oscil.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>
sr = 44100
ksmps = 10
nchnls = 2
0dbfs = 1

; Determines which instrument outputs debug statements with defines:
; Change which one is commented out to alter behavior before execution
#define debug1 ##
; #define debug2 ##

 instr 1
 	iFreq = p4
	; Outputs text if debug1 is defined
	; This one should print by default
	#ifdef debug1
	     prints "instr 1 debug called\n"
	#end
     a1   vco2 .25, iFreq
     outs  a1, a1
 endin

 instr 2
 	iFreq = p4
	; Outputs text if debug2 is defined
	; This one should not print by default
	#ifdef debug2
	     prints "instr 2 debug called\n"
	#end
     a1   vco2 .25, iFreq
     outs  a1, a1
 endin

</CsInstruments>
<CsScore>
i1 0 2 440
i2 0 2 660
</CsScore>
</CsoundSynthesizer>


Voir aussi

#define, $NAME, #ifndef, #include, #undef

Crédits

Auteur : John ffitch
University of Bath/Codemist Ltd.
Bath, UK
Avril 2005

Nouveau dans Csound5 (et 4.23f13)