2012-03-30 9 views
13

I #include <string.h>strcasestr(src, search);を呼び出すと、次のエラーメッセージimplicit declaration of function ‘strcasestr’が表示されます。どのように私はコンパイルする:gcc-4.6 -Wall -lsqlite3 -lunac -Werror -O2 -o foo.out foo.cこれを修正する方法?前もって感謝します。strcasestr()はどのように使用しますか?

答えて

21

+0

は、私があまりにもプロトタイプの機能を追加しました: 'の#include の#define _GNU_SOURCE のchar * strcasestr(のconst char型*の干し草の山、constのchar型*針);'を、現在正常に動作します。どうもありがとう。 – Jack

+1

@Jack、あなたはプロトタイプを追加する必要はありません。ただし、定義はincludeの前に**ある必要があります。 –

+2

注意:#defineがファイルの最初の行であることを確認してください。 '#include '、 '#define _GNU_SOURCE'、' #include 'のようにstdio.hに既に含まれているので、strcasestrは得られません。安全な選択は-D_GNU_SOURCEでコンパイルされています。 – Cubbi

6

あなたは追加する必要があります。

#define _GNU_SOURCE 

関数は非標準であるため、string.hとしては、前に。 strcasestrはどの#include#include <string.h>前にあなたがしなければならない#define _GNU_SOURCE非標準の拡張であるので、(他のファイルがすでにこの潜在的な問題を指摘するために<string.h>、感謝@Cubbiを含んでいてもよい)、corresponding manpageで指定されているように

関連する問題