test di verificaDomanda
Qual è l'output di questo programma in linguaggio C?
immagine del test



1 / 2 domande



Vuoi visualizzarlo sul tuo sito?

#ifndef ( linguaggio C )

Nel linguaggio C la direttiva #ifndef ( o #if !defined ) controlla se un simbolo è stato dichiarato con la direttiva #define in fase di preprocessione del codice. La direttiva è la contrazione di IF Not DEFine.

La sintassi di #ifnfef

#ifndef [simbolo]
blocco di istruzioni
#endif

Se il simbolo non è definito, il preprocessore aggiunge al codice il blocco di istruzioni tra #ifndef e #endif.

Viceversa, lo esclude.

Dopo la preprocessione il codice sorgente passa al compilatore, per essere compilato in un oggetto eseguibile.

Nota. La direttiva #ifndef è utile per verificare se un simbolo è già stato dichiarato ed evitare di dichiararlo più volte nello stesso codice sorgente.

Esempi pratici

Esempio 1

In questo esempio la direttiva #ifndef verifica se il simbolo VERS è definito.

Se non è definito lo definisce.

  1. int main()
  2. {
  3. #ifndef VERS
  4. #define VERS 2
  5. #endif
  6. }

In questo caso il simbolo VERS non è ancora definito.

Pertanto, la direttiva #ifndef nella linea 3 è vera.

Il preprocessore elabora la direttiva #define nella linea 4 e definisce il simbolo.

Esempio 2

In questo codice l'istruzione #ifndef verifica se il simbolo VERS non è stato definito.

  1. int main()
  2. {
  3. printf("A");
  4. #ifndef VERS
  5. printf("B");
  6. #endif
  7. }

In questo caso il simbolo VERS non è ancora definito.

Quindi la condizione #ifndef è vera e il preprocessore prepara il seguente codice sorgente.

  1. int main()
  2. {
  3. printf("A");
  4. printf("B");
  5. }

Esempio 3

Nell'esempio successivo il simbolo VERS è già stato dichiarato.

  1. int main()
  2. #define VERS 2
  3. {
  4. printf("A");
  5. #ifndef VERS
  6. printf("B");
  7. #endif
  8. }

Quindi, la condizione #ifndef è falsa.

Il codice sorgente del programma è il seguente:

  1. int main()
  2. {
  3. printf("A");
  4. }

In questo caso il preprocessore non ha aggiunto il blocco di istruzioni.

Nota. Il preprocessore prepara il codice sorgente alla compilazione. Non elabora le istruzioni in linguaggio C. Si limita a eliminare o aggiungere blocchi di istruzioni al programma, prima della compilazione.

https://www.okpedia.it/ifndef-c


Segnala un errore o invia un suggerimento per migliorare la pagina


Il preprocessore C

Le direttive


FacebookTwitterLinkedinLinkedin