#ifdef
Précédent | Opcodes et opérateurs de l'orchestre | Suivant

## #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)

Précédent | Niveau supérieur | Suivant
#undef | Sommaire | #ifndef