ここから本文です

C言語について

ryu********さん

2014/3/2022:26:21

C言語について

C言語をやっていてコンパイルするとなぜか
”〜に対する定義されていない参照です”とでてくるのですが
これはどういう意味なのでしょうか?

閲覧数:
17,508
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

khu********さん

2014/3/2112:16:51

C の「定義」とは、「メモリ上に実体を確保すること」を指します。

たとえば、int a( int b ) { return b * 2; } は、関数 a の宣言であり、定義でもあります。こうする事で、内容を持つ関数がメモリ上に展開されるからです。

しかし、この関数のプロトタイプである int a( int ); は、関数の宣言ですが、定義ではありません。C の「宣言」とは、「どこかにそれが有ることを期待する」という事に過ぎません。

つまり、「〜に対する定義されていない参照です」というのは、参照している対象が、(たとえ宣言はされていても)定義されていない、どこにもそんな実体は無い、と言っているのです。

宣言されたものは、そのプログラムの中で使う(参照)ことができます。たとえば extern int c; という宣言があれば、その変数 c を使ったプログラムがコンパイル出来ます。
しかし、その変数 a の定義は、どこかに無ければなりません。

そのエラー・メッセージが出ている行のあたり(特に、その行自身と、その行よりも少し上の行)をよく見て、「定義の無いもの」を使っていないかどうか、調べてみてください。

質問した人からのコメント

2014/3/27 14:27:01

有難うございましたm(_ _)m

ベストアンサー以外の回答

1〜1件/1件中

bee********さん

編集あり2014/3/2022:42:33

コードとコンパイルしたコマンドみないと分かんないよ

多分リンクエラーだと思うけど。
プロトタイプ宣言してるけど、実体がないとかじゃない?

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる