
main.c:7:43: warning: implicit declaration of function ‘dcal’ [-Wimplicit-function-declaration]
fprintf(stdout,"dcal(%g,%g)=
%g\n",a,b,dcal(a,b));
^~~~
main.c:7:34: warning: format ‘%g’ expects argument of type ‘double’, but
argument 5 has type ‘int’ [-Wformat=]
fprintf(stdout,"dcal(%g,%g)=
%g\n",a,b,dcal(a,b));
~^ ~~~~~~~~~
%d
main.c:10:5: warning: implicit declaration of function ‘g_print’; did you mean ‘dprintf’? [-Wimplicit-function-declaration]
g_print();
^~~~~~~
dprintf
--------------------------------------------------------------------
func.c:6:5: warning: implicit declaration of function ‘fprintf’ [-Wimplicit-function-declaration]
fprintf(stdout,"func:gval=%d\n",gval);
^~~~~~~
func.c:6:5: warning: incompatible implicit declaration of built-in function ‘fprintf’
func.c:6:5: note: include ‘<stdio.h>’ or provide a declaration of ‘fprintf’
func.c:6:13: error: ‘stdout’ undeclared (first use in this function)
fprintf(stdout,"func:gval=%d\n",gval);
^~~~~~
func.c:6:13: note: each undeclared identifier is reported only once for each function it appears in
func.c:6:37: error: ‘gval’ undeclared (first use in this function); did you mean ‘dcal’?
fprintf(stdout,"func:gval=%d\n",gval);
^~~~
dcal
上記のような警告やエラーが出たのですがどのような意味か教えてください。
No.1ベストアンサー
- 回答日時:
全文、google翻訳にかけてみてください。
わりとまともな日本語になります。
○C言語では、「使う前に宣言」が大原則ですが、大昔のC言語ではそうではありませんでした。
その名残りで
・宣言されていない関数は 「引数任意、戻り値intの関数」として宣言されたと見做す
・宣言されていない変数は 「int型の変数」として宣言されたと見做す
という「暗黙の宣言(implicit declaration)」というルールがあります。
ただし、昨今の作り方としては非推奨だし、変数の方は(最近の規格では)暗黙の宣言はできずにエラーとなります。
warning: implicit declaration of function 〜 は「関数の暗黙の宣言をしている」という「警告」です。
正確にはエラーではありませんので、コンパイル自体は進みます。
error: ‘???’ undeclared というのは「???という変数が未定義」というエラーです。
○ printf や fprintf , scanf 等の一部の関数( 宣言が func(...) みたいになっているもの) は、本来、引数の型をチェックできません。
%〜 の数や対応する型を正しく指定するのは、プログラマの自己責任となります。
ですが、一部のコンパイラは、できる範囲でチェックして、対応が間違っているときに「警告」を出します。
> main.c:7:34: warning: format ‘%g’ expects argument of type ‘double’, but
> argument 5 has type ‘int’ [-Wformat=]
%g は 対応するdouble型の値を出力する書式です。
これに該当する箇所には、 dcal(a,b) があります。
この dcal が「暗黙の宣言」によって, int型の戻り値の関数となっています。
そのため、求められる(expects)型である double と、指定された int とで違います、という警告が出ています。
○ did you mean 〜
未定義の名前にたいして「もしかしたらこれの打ち間違いですか?」という提案をしているものです。
ですが、いずれも的はずれの指摘をしているようです。
https://oshiete.goo.ne.jp/qa/11400399.html
こちらでは、(func.hの使い方がよくないですが) ちゃんと事前の宣言がされていてエラーなくコンパイルできます。
変更の方法がよくなかったのではないでしょうか
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) cryptcatのビルド 4 2022/07/21 14:55
- C言語・C++・C# Cのオブジェクトファイルの逆アセンブル 5 2023/05/13 01:51
- その他(プログラミング・Web制作) python flask から fastapiへの移行時のエラー対処 1 2023/02/05 12:26
- 英語 Results: Two implant failures, one from each subgr 1 2022/12/10 16:49
- 英語 英文の添削お願いします。【長文です。】 マッチングアプリで相手を言い負かしている時のやつです。 色々 1 2023/07/01 02:12
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- 英語 Osseointegration has been suggested to represent a 3 2022/06/10 08:22
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- C言語・C++・C# C++のcase文の書き方 4 2023/02/24 20:50
- 英語 できるだけ直訳で英語の翻訳をお願いします。(英語→日本語) 1 2022/10/15 20:59
このQ&Aを見た人はこんなQ&Aも見ています
-
C言語のポインターに関する警告
C言語・C++・C#
-
C言語初心者の質問失礼します。
C言語・C++・C#
-
C言語でヘッダファイルにグローバル変数を宣言する
C言語・C++・C#
-
-
4
gcc: incompatible pointer type
C言語・C++・C#
-
5
【gcc・cygwin】multiple definitionエラーの解決法
C言語・C++・C#
-
6
C言語のコンパイルエラー
C言語・C++・C#
-
7
makeコマンドのエラーについて(
UNIX・Linux
-
8
fgetsなどのときのstdinのバッファを消すには?
C言語・C++・C#
-
9
PCC-S-02201エラーの対処を教えてください!
Oracle
-
10
C言語 配列の長さの上限
C言語・C++・C#
-
11
共有メモリについて
C言語・C++・C#
-
12
Pro*Cの構文エラー
その他(プログラミング・Web制作)
-
13
【C言語】構造体内の領域解放(free)の仕方
C言語・C++・C#
-
14
C言語にて構造体のメンバがNULLであるかを判定するサンプルを作成して
C言語・C++・C#
-
15
svnでファイル移動すると履歴がついてこない
その他(コンピューター・テクノロジー)
-
16
ポインター引数の関数でコンパイルエラーが出る。
C言語・C++・C#
-
17
declaration of 'index' shadow a global declaration
C言語・C++・C#
-
18
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
visualstudio C# テキストボッ...
-
2重定義って??
-
DWORDの実際の型は何でしょうか
-
typedef enumの使い方を教えて...
-
構造体の宣言でエラーが出ます。
-
main.c:7:43: warning: implici...
-
C++でboolにintの値を代入する...
-
直接アドレス指定のポインタの...
-
C言語の課題について
-
long型の定数の末尾にLを付ける...
-
DLLでLIBファイルが作成されない
-
変数の型を定義しなかった場合...
-
LNK2019: 未解決の外部シンボル...
-
C言語のコンパイルエラー
-
呼び出し時のパラメータが足りない
-
テンプレート関数でコンパイル...
-
ハンドルされていない例外が発...
-
C++のfor文について
-
enumについて
-
プログラムの中で別のmainを呼...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DWORDの実際の型は何でしょうか
-
visualstudio C# テキストボッ...
-
long型の定数の末尾にLを付ける...
-
C++のfor文について
-
C++でboolにintの値を代入する...
-
2重定義って??
-
main.c:7:43: warning: implici...
-
typedef enumの使い方を教えて...
-
プログラムの中で別のmainを呼...
-
変数の型を定義しなかった場合...
-
関数の実体定義にヘッダファイ...
-
ハンドルされていない例外が発...
-
構造体の要素すべてに対する四...
-
C言語のコンパイルエラー
-
DLLでLIBファイルが作成されない
-
sshdログの意味
-
DLLのLPSTR 項目の戻り値の取得...
-
enumについて
-
VC6でlong longでエラー?
-
【#define】 defineで定義した...
おすすめ情報