L'avviso o errore si verifica quando una funzione viene invocata prima di essere stata dichiarata con un prototipo o prima di aver incluso l'header (.h) corrispondente; negli standard C moderni (C99/C11) è considerato un errore grave.
W_IMPLICIT_FUNCTION
→
L'inizializzatore fornito non è compatibile con il tipo della variabile, oppure una stringa letterale costante supera la capacità dell'array di caratteri allocato (es. 'char s[3] = "ciao";' priva di spazio per il terminatore nullo '\0').
INVALID_INITIALIZER
→
Segnala un'espressione che esegue un calcolo o un accesso senza assegnarne il risultato a una variabile né produrre effetti collaterali (es. scrivere 'x == 5;' credendo di assegnare, o 'i + 1;' invece di 'i++;').
STATEMENT_NO_EFFECT
→
L'operatore di assegnazione '=' richiede a sinistra un'area di memoria modificabile (lvalue, come una variabile ordinaria); tentare di assegnare a un'espressione aritmetica ('a + b = 10'), a una costante letterale o a una chiamata di funzione solleva questo errore.
LVALUE_REQUIRED_ASSIGNMENT
→
L'avviso compare quando si passa un puntatore a dati costanti ('const char *') a una funzione che accetta un puntatore non-const ('char *'), rischiando la modifica accidentale di memoria protetta.
DISCARDS_CONST
→
L'errore compare quando una struttura o typedef viene definita più volte nello stesso file di traduzione, tipicamente a causa dell'inclusione ripetuta di un file header privo di include guards (#ifndef / #pragma once).
REDEFINITION_STRUCT
→
Compare tipicamente quando si utilizza l'operatore punto ('ptr.x') su una variabile che è un puntatore a struttura anziché l'istanza diretta della struttura; la sintassi corretta per i puntatori richiede l'operatore freccia ('ptr->x') o '(*ptr).x'.
MEMBER_NOT_STRUCTURE
→
L'errore compare quando si tenta di allocare per valore una variabile di una struct o union di cui è nota solo la dichiarazione anticipata (forward declaration 'struct Foo;'), senza che il compilatore ne conosca la dimensione dei campi.
STORAGE_SIZE_UNKNOWN
→