Prova a rimuovere -std=c99 . Ciò impedisce la definizione delle macro POSIX in <features.h> , che impedisce <unistd.h> dall'includere <getopt.h> .Oppure includi tu stesso getopt.h.
Aggiungi #include <getopt.h> tra gli include.
Il cloud non rimuove -std=c99 .Invece, aggiungi #define _POSIX_C_SOURCE 2 all'inizio.
Non è assolutamente necessario modificare il -std o per includere getopt.h direttamente.
La cosa giusta da fare se si desidera utilizzare le funzionalità del linguaggio C99 (o qualsiasi altro standardizzato) insieme alle funzioni POSIX (come getopt ) è definire _POSIX_C_SOURCE alla versione corretta (ad esempio, 200809L ) prima di includere le rispettive intestazioni. Per maggiori dettagli vedi feature_test_macros(7).