Versuchen Sie, -std=c99 zu entfernen . Dadurch wird verhindert, dass die POSIX-Makros in <features.h> definiert werden , was <unistd.h> verhindert von einschließlich <getopt.h> .Oder binden Sie selbst getopt.h ein.
Fügen Sie #include <getopt.h> hinzu unter den Includes.
Sie entfernen -std=c99 nicht . Fügen Sie stattdessen #define _POSIX_C_SOURCE 2 hinzu am Anfang.
Es besteht absolut keine Notwendigkeit, den -std zu ändern oder um getopt.h einzuschließen direkt.
Das Richtige, wenn Sie die C99- (oder andere standardisierte) Sprachfunktionen zusammen mit POSIX-Funktionen (wie getopt) verwenden möchten ) soll _POSIX_C_SOURCE definieren auf die richtige Version (z. B. 200809L ) vor dem Einfügen der entsprechenden Header. Weitere Einzelheiten finden Sie unter feature_test_macros(7).