-ansi disabilita alcune funzionalità del compilatore, che si manterrà fedele allo standard ANSI c89 (o C++ 98, se compili un progetto in C++).

-pendatic solleva tutti i warning su pezzi di codice che non seguono strettamente lo standard:

codice:
#include <stdio.h>

int main()
{
	int i;
	printf("ciao\n");
	int j;
}
Genera:

codice:
anto@anto-net:~/desktop$ gcc -ansi -pedantic main.c 
main.c: In function ‘main’:
main.c:9: warning: ISO C90 forbids mixed declarations and code
-Wall abilita diversi flag di warning, mostrati quando si presentano situazioni strane.
Ad esempio:

codice:
#include <stdio.h>

int main()
{
	int i;

	printf("%d\n", i);
}
Genera i warning:

codice:
anto@anto-net:~/desktop$ gcc -Wall main.c 
main.c: In function ‘main’:
main.c:8: warning: control reaches end of non-void function
main.c:7: warning: ‘i’ is used uninitialized in this function
Senza -Wall non li avresti.

-Wextra ne attiva ancora altri. In pratica dovresti averli attivi tutti aggiungendo anche Wextra (se non ricordo male, lo trovi anche come -W, la vecchia sintassi)

Talvolta utilizzo anche -Werror. Dove trova un warning, lo tratta come un errore, quindi la compilazione non va a buon fine.