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()?
13
A
Antwort
21
Wie seit strcasestr
im corresponding manpage, angegeben ist eine Nicht-Standard-Erweiterung müssen Sie #define _GNU_SOURCE
vor dem vor jedem #include <string.h>
#include
(andere Dateien bereits enthalten kann <string.h>
dank @Cubbi für dieses potentielle Problem Hinweis darauf).
6
Sie müssen hinzufügen:
#define _GNU_SOURCE
vor dem string.h
enthalten, da die Funktion nicht-Standard ist.
Verwandte Themen
- 1. Wie benutze ich rand_r und wie benutze ich es threadsicher?
- 2. Wie benutze ich class_eval?
- 3. Wie benutze ich LevelDB?
- 4. Wie benutze ich gtk_widget_add_accelerator?
- 5. Wie benutze ich navigator.app.exitApp()?
- 6. Wie benutze ich NSSM
- 7. Wie benutze ich NSScanner?
- 8. Wie benutze ich json_encode?
- 9. Wie benutze ich CSSLint?
- 10. Wie benutze ich password_hash?
- 11. Wie benutze ich WaitForCursor?
- 12. Wie benutze ich UIImagePickerControllerCropRect
- 13. Wie benutze ich MigLayout?
- 14. Wie benutze ich base64EncodeData?
- 15. Wie benutze ich spl_autoload_register?
- 16. Wie benutze ich subList()
- 17. Wie benutze ich grails.plugin.location?
- 18. Wie benutze ich phpbrowserbox?
- 19. Wie benutze ich removeView()?
- 20. Wie benutze ich webgrease?
- 21. Wie benutze ich TDictionary?
- 22. Wie benutze ich ProGuard?
- 23. Wie benutze ich cscope?
- 24. Wie benutze ich TextAppearanceSpan
- 25. Wie benutze ich FastRoute?
- 26. Wie benutze ich Effeckt.css?
- 27. Wie benutze ich sstableloader?
- 28. Wie benutze ich NSPR?
- 29. Wie benutze ich com.google.appengine.api.datastore.Text
- 30. Wie benutze ich glslang?
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
@Jack, Sie müssen (und sollten nicht) den Prototyp hinzufügen. Die Definition muss jedoch ** vor ** dem Include sein. –
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