カテゴリー【C/C++】
【C/C++】implicit declaration of function ‘strcasestr’ ; assignment to ‘char *’ from ‘int’ makes pointer from integer without a cast【の対処法】
POSTED BY
2022-12-14
2022-12-14

表題のようなwarningが出ると、コンパイルはできるが実行時に落ちる。
以下そのソースコード抜粋 airport.cとすると
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(void){ char in[512],*p1; strcpy( in,"Grantley Adams International Airport" ); if( (p1 = strcasestr( in," International Airport" )) != NULL || (p1 = strcasestr( in," Airport" )) != NULL ){} return 0; }
コンパイル
gcc airport.c
警告
airport.c: In function ‘main’: airport.c:74:12: warning: implicit declaration of function ‘strcasestr’; did you mean ‘strcasecmp’? [-Wimplicit-function-declaration] if( (p1 = strcasestr( in," International Airport" )) != NULL || (p1 = strcasestr( in," Airport" )) != NULL ){ ^~~~~~~~~~ strcasecmp airport.c:74:10: warning: assignment to ‘char *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion] if( (p1 = strcasestr( in," International Airport" )) != NULL || (p1 = strcasestr( in," Airport" )) != NULL ){
これはstrcasestr関数がデフォルトでは古い形式のものが採用されるためで、このままでは落ちる。
_GNU_SOURCEをdefineすれば解決する。
A、コンパイル時に定義する
gcc -D_GNU_SOURCE airport.c
B、ソースコード内でinclude前に定義する
#define _GNU_SOURCE #include <stdio.h> #include <string.h> #include <stdlib.h>
Makefileを使うプロジェクトであるなら共通定義部分で普通は
CC_OPT += -D_GNU_SOURCE
などとしているので、つい単発コンパイルだと忘れてしまう。
そもそもgccでコンパイルしているのだからデフォルトで新関数使ってくれよというところではある。
有名TVショッピング 最多ベストセラー受賞のシューズブランド 神戸ビューフォート

TVショッピング10年以上、百貨店販売20年以上。
靴の街神戸で職人が丁寧に手作りでお届けする日本製シュー...【READ MORE】
ネット宅配DVDレンタルサービス【ゲオ宅配レンタル】有料会員登録促進

GEO 宅配レンタルは、ウェブサイトから注文したDVD・CDが、
指定の宛先まで届くオンラインDVD・CDレンタルサ...【READ MORE】
Android
iPhone/iPad
Flutter
MacOS
Windows
Debian
Ubuntu
CentOS
FreeBSD
RaspberryPI
HTML/CSS
C/C++
PHP
Java
JavaScript
Node.js
Swift
Python
Amazon/AWS
CORESERVER
Google
仮想通貨
LINE
IBM Watson
Microsoft Azure
Xcode
VMware
MySQL
PostgreSQL
Redis
Groonga
Git/GitHub
Apache
nginx
Postfix
SendGrid
Hackintosh
Hardware
Fate/Grand Order
ウマ娘
将棋
※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
※本記事内容の無断転載を禁じます。
【キーワード検索】
全国50都市で開催したプログラミング講座がオンライン・無料開催【テックジム】

【送料無料】国内初!ヒト幹細胞×卵殻膜原液 VITRY トータルエイジングケア 定期便
マリンコラーゲン・チアシードならマザーリーフ♪
ゴールドジム公式ECサイト【フィットネスショップ】
競馬サイト【大川慶次郎〜競馬の神様と女神のパーフェクト馬券メソッド〜】会員登録
集客できるWordPressテーマなら「New Standard」まずは無料体験
愛犬の健康を考えたい方必携。季節を愛犬と楽しむ獣医師監修の【WAN Smile BOX】
SNSで人気爆発中!ヒト幹細胞入りの洗い流さないヘアオイル【ニネイク】
全国一律送料が嬉しい!メール便でいつでも気軽にショッピング★【フェフェオンラインショップ】
【店舗&宅配】iPhone修理のダイワンテレコム(全国50店舗展開)

【送料無料】国内初!ヒト幹細胞×卵殻膜原液 VITRY トータルエイジングケア 定期便

マリンコラーゲン・チアシードならマザーリーフ♪

ゴールドジム公式ECサイト【フィットネスショップ】

競馬サイト【大川慶次郎〜競馬の神様と女神のパーフェクト馬券メソッド〜】会員登録

集客できるWordPressテーマなら「New Standard」まずは無料体験

愛犬の健康を考えたい方必携。季節を愛犬と楽しむ獣医師監修の【WAN Smile BOX】

SNSで人気爆発中!ヒト幹細胞入りの洗い流さないヘアオイル【ニネイク】

全国一律送料が嬉しい!メール便でいつでも気軽にショッピング★【フェフェオンラインショップ】

【店舗&宅配】iPhone修理のダイワンテレコム(全国50店舗展開)

【最近の記事】【全部の記事】
ドコモAndroidケータイ機種変更・データ保存メモ【OpenAI Python API】Models/List modelsのサンプル
【Python】配列の要素を順番に取得する
PortForwarderでno hostkey algと言われ接続できない場合
【Linux】iconv/libiconvをソースコードからインストール
【OpenAI Node.js API】Images/Create image variationのサンプル
【OpenAI Node.js API】Models/Retrieve modelのサンプル
【JavaScript/Node.js】配列の要素を順番に取得する
【OpenAI Node.js API】Models/List modelsのサンプル
Node.jsでJSON返却値を[Object]ではなくフル階層で表示する
【人気の記事】【全部の記事】
進研ゼミチャレンジタッチをAndroid端末化する【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
Googleスプレッドシートを編集したら自動で更新日時を入れる
Windows版Google Driveが使用中と言われアンインストールできない場合
Googleファミリーリンクで子供の端末の現在地がエラーで取得できない場合
Androidホームで左にスワイプすると出てくるニュース共を一切表示させない方法
【Javascript】JSON配列内にある特定要素の取得法【Node.js】
【Apache】サーバーに同時接続可能なクライアント数を調整する
Googleスプレッドシートで図形をコピーして使いまわすには
OpenAIのNode.js APIを使用し連続で会話する
【カテゴリーリンク】
Android
iPhone/iPad
Flutter
MacOS
Windows
Debian
Ubuntu
CentOS
FreeBSD
RaspberryPI
HTML/CSS
C/C++
PHP
Java
JavaScript
Node.js
Swift
Python
Amazon/AWS
CORESERVER
Google
仮想通貨
LINE
IBM Watson
Microsoft Azure
Xcode
VMware
MySQL
PostgreSQL
Redis
Groonga
Git/GitHub
Apache
nginx
Postfix
SendGrid
Hackintosh
Hardware
Fate/Grand Order
ウマ娘
将棋