2012-03-30 15 views
13

I #include <string.h> aber wenn ich strcasestr(src, search); aufrufen bekomme ich die folgende Fehlermeldung implicit declaration of function ‘strcasestr’. Wie kompiliere ich: gcc-4.6 -Wall -lsqlite3 -lunac -Werror -O2 -o foo.out foo.c wie das zu beheben? Danke im Voraus.Wie benutze ich strcasestr()?

Antwort

21

Wie seit strcasestr im corresponding manpage, angegeben ist eine Nicht-Standard-Erweiterung müssen Sie #define _GNU_SOURCE vor dem #include <string.h> vor jedem #include (andere Dateien bereits enthalten kann <string.h> dank @Cubbi für dieses potentielle Problem Hinweis darauf).

+0

Ich habe auch den Prototyp-Funktion: '# include #define _GNU_SOURCE char * strcasestr (const char * Heuhaufen, const char * Nadel);' und arbeitet jetzt in Ordnung. Vielen Dank. – Jack

+1

@Jack, Sie müssen (und sollten nicht) den Prototyp hinzufügen. Die Definition muss jedoch ** vor ** dem Include sein. –

+2

Vorbehalt: Stellen Sie sicher, dass #define die erste Zeile in der Datei ist. Wenn Sie # ', dann' #define _GNU_SOURCE' und dann '#include ' einschließen, erhalten Sie strcasestr nicht, da stdio.h bereits string.h enthält. Die sichere Wahl besteht in der Kompilierung mit -D_GNU_SOURCE. – Cubbi

6

Sie müssen hinzufügen:

#define _GNU_SOURCE 

vor dem string.h enthalten, da die Funktion nicht-Standard ist.