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).