CCorsi

Come sapere quale versione di C stai utilizzando

Nelle fasi di Sviluppo di un progetto potrebbe risultarti fondamentale comprendere quale versione di C tu o il tuo team state utilizzando. Questo è possibile comprenderlo tramite STDC_VERSION.

__STDC__, viene utilizzato dai compilatori per indicare che è un compilatore C standard, questo comporta che l’utilizzo di STDC_VERSION ti faccia comprendere quale versione standard di C tu stia utilizzando.

Se il nostro intento fosse quello di far visualizzare un output differente in base al valore contenuto in STDC_VERSION dobbiamo affidarci alle direttive #if, #elif, #else e #endif, (direttive di compilazione condizionale).

Le direttive di compilazione condizionale consentono la compilazione di alcune parti di cosi in base a condizioni prestabilite. Ad ogni #if deve corrispondere un relativo #endif.

Le versioni attualmente pubblicate di C sono:

VERSIONESTANDARDDATA DI PUBBLICAZIONE
K&Rn/a22/02/1978
C89ANSI X3.159-198914/12/1989
C90ISO/IEC 9899:199020/12/1990
C95ISO/IEC 9899/AMD1:199530/03/1995
C99ISO/IEC 9899:199916/12/1999
C11ISO/IEC 9899:201115/12/2011
C18ISO/IEC 9899:2018??/06/2018

Nel seguente esempio abbiamo controllato il valore contenuto in STDC_VERSION e abbiamo affermato che:

  • Se il valore è uguale a 201710L, la versione è la C18
  • Se il valore è uguale a 201112L, la versione è la C11
  • Se il valore è uguale a 199901L, la versione è la C99
  • Se il valore non è nessuno di questi, la versione è la C89/C90
#include <stdio.h> 

int main() {
    
#if __STDC_VERSION__ >=  201710L
  printf("We are using C18!\n");
#elif __STDC_VERSION__ >= 201112L
  printf("We are using C11!\n");
#elif __STDC_VERSION__ >= 199901L
  printf("We are using C99!\n");
#else
  printf("We are using C89/C90!\n");
#endif
  return 0;
}

LINK UTILI

Altro Sul C: https://www.developersumo.com/c/
I nostri Corsi: https://www.developersumo.com/corsi/
Pagina Instagram: https://www.instagram.com/developer_sumo/?hl=it
Le nostre App su Play Store: https://play.google.com/store/apps/developer?id=Developer+Sumo

What's your reaction?

Excited
0
Happy
0
In Love
0
Not Sure
0
Silly
0

You may also like

More in:C

Leave a reply

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *