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



1 / 2 domande



Vuoi visualizzarlo sul tuo sito?

#ifdef ( linguaggio C )

Nel linguaggio C la direttiva #ifdef ( o #if defined ) verifica se un identificativo è già stato definito con la direttiva #define. È una direttiva di preprocessione del codice sorgente.

La sintassi di #ifdef

#ifdef [simbolo]
blocco
#endif

Se il simbolo è definito, il preprocessore considera il blocco di codice compreso tra #ifdef e #endif.

Viceversa, lo esclude dalla compilazione.

Esempi pratici

Esempio 1

Nel seguente codice sorgente la direttiva #ifdef verifica se l'identificativo VERS è definito.

  1. #include <stdio.h>
  2. #define VERS 5
  3. int main() {
  4. printf("A");
  5. #ifdef VERS
  6. printf("B");
  7. #endif
  8. }

In questo caso, il simbolo è stato definito nella riga 2 tramite la direttiva #define.

Quindi, il processore aggiunge la linea 6 del codice.

Il codice sorgente del programma è il seguente:

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

Il compilatore compila il codice sorgente precedente creando l'oggetto eseguibile del programma.

Esempio 2

In questo caso il simbolo VERS non è definito.

  1. #include <stdio.h>
  2. int main() {
  3. printf("A");
  4. #ifdef VERS
  5. printf("B");
  6. #endif
  7. }

Pertanto, il preprocessore elimina del tutto la riga di codice compresa tra #ifdef e #endif, ossia la riga 5.

Ora il codice sorgente del programma è il segnete.

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

Il precedente codice sorgente viene compilato dal compilatore.

Nota. Il compilatore non elabora la riga 5 del codice sorgente del programma, perché il preprocessore la elimina nella fase immediatamente precedente alla compilazione.

Esempio 3 ( include condizionato )

Il preprocessore verifica quale simbolo è definito ( WINDOWS o LINUX ).

  1. #ifdef WINDOWS
  2. #include "windows.h"
  3. #endif
  4. #ifdef LINUX
  5. #include "windows.h"
  6. #endif
  7. int main() {
  8. ...
  9. }

In questo modo, il preprocessore richiama il file header corretto tramite la direttiva #include.

Nota. Nelle direttive #include il nome del file è tra virgolette "" perché si tratta di un file esterno situato nella stessa directory del codice sorgente del programma. Viceversa, quando il nome del file è tra i simboli < > ( es. <stdio.h> ) è un file situato nella directory di sistema.

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


Segnala un errore o invia un suggerimento per migliorare la pagina


Il preprocessore C

Le direttive


FacebookTwitterLinkedinLinkedin