Domanda

Fa il seguente programma invoke Undefined Behaviour in C?

int main()
{
    printf("Printf asking: Where is my declaration ?");
}

Nel programma precedente v'è una dichiarazione implicita di printf(), quindi è compatibile con il codice di cui sopra completamente standard o ha solo alcuni comportamenti implementazione specifica?

È stato utile?

Soluzione

Sì lo fa. Non avendo una dichiarazione di portata è UB.

  

comportamento J.2 non definita

     

- Per chiamata a una funzione senza un   prototipo di funzione di portata in cui il   funzione è definita una funzione   prototipo, sia le estremità prototipo   con un'ellissi oi tipi di   argomenti che seguono promozione non sono   compatibile con i tipi della   parametri (6.5.2.2).

Inoltre, nota che cadere principale va bene a C99 (cioè equivalente alla return 0;). Per la pre-C99 compilatori conformi hai bisogno di una dichiarazione di ritorno in cui il tipo di ritorno della funzione principale è un tipo compatibile con int .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top