ich #include <string.h>
aber wenn ich anrufe strcasestr(src, search);
Ich bekomme folgende Fehlermeldung implicit declaration of function ‘strcasestr’
. wie kompiliere ich: gcc-4.6 -Wall -lsqlite3 -lunac -Werror -O2 -o foo.out foo.c
wie kann man das beheben? Danke im Voraus.
Wie verwende ich strcasestr()?
Matteo Italien
Wie in der angegeben entsprechende Manpageseit strcasestr
ist eine nicht standardmäßige Erweiterung, die Sie benötigen #define _GNU_SOURCE
Vor dem vor irgendwelchen #include <string.h>
#include
(andere Dateien können bereits enthalten <string.h>
, danke @Cubbi für den Hinweis auf dieses potenzielle Problem); dies kann auch leicht durch Angabe erreicht werden -D_GNU_SOURCE
in der Compiler-Befehlszeile.
-
Ich habe auch die Prototyp-Funktion hinzugefügt:
#include <string.h> #define _GNU_SOURCE char *strcasestr(const char *haystack, const char *needle);
und funktioniert jetzt gut. Vielen Dank.– Jack
30. März 2012 um 1:12 Uhr
-
@Jack, Sie müssen (und sollten) den Prototyp nicht hinzufügen. Das Definieren muss jedoch sein Vor die beinhalten.
– Matthäus Flaschen
30. März 2012 um 1:32 Uhr
-
Achtung: Stellen Sie sicher, dass #define die erste Zeile in der Datei ist. Wenn du
#include <stdio.h>
dann#define _GNU_SOURCE
und dann#include <string.h>
, erhalten Sie strcasestr nicht, da stdio.h bereits string.h enthält. Die sichere Wahl ist das Kompilieren mit -D_GNU_SOURCE.– Kubbi
28. August 2012 um 12:58 Uhr
-
Ich habe diese Zeile auch hinzugefügt, aber es funktioniert immer noch nicht. irgendeine Hilfe?
– Hefaz
2. Mai 2019 um 23:06 Uhr
-
@Hefaz Welchen Compiler/welche Plattform verwendest du?
– Matteo Italien
3. Mai 2019 um 5:06 Uhr
Sie müssen hinzufügen:
#define _GNU_SOURCE
Vor dem string.h
enthalten, da die Funktion nicht standardmäßig ist.