ID非公開

2022/5/24 15:53

66回答

C言語で、あるx.cをコンパイルするためにy.hをincludeする必要があります。教科書を見て、y.hとy.cのソースコードを書いたのですがy.cがコンパイルしてもうまく読み込めません。エラー内容は、main関数がない、そも

C言語関連90閲覧

ベストアンサー

0

その他の回答(5件)

0

想像ですが、 y.c の冒頭に、 #include "y.h" を入れる必要があるのでしょう。そうなっていないのでは?多分。 それか、y.c を作成するのは止めて、すべての内容を y.h に書いてしまえば良いのかも。

0

y.cはx.c由来の実行可能ファイルを作るのに必要な 「ライブラリ」に相当するものになります。 (x.c以外でも使用する可能性があるのでy.cと 別にしたわけです) 「ライブラリ」にはmainを置きません(というよりも 恐らく「置いてはいけません」) y.cを普通にコンパイルしても「mainがない」と エラーになるかもしれませんが、実はこれ半分成功 しています。y.oとかy.objというファイルが、恐らく y.cと同じ場所に出来ていると思います。 もし出来ていれば半ば成功したようなものになります。 y.cつまりy.oをx.cから使うのには x.cのコンパイルの際にy.oをリンク指定すればよい のです。 具体的な指定方法は、コンパイラに拠ります。 例えばUNIX系では cc x.c y.o となります。コンソールコマンドで簡単にコンパイル &リンクできます。 Windows上のVisualStudioのような統合開発環境の場合 はなぜかすこしややこしくなりますので省略させて 頂きます。もう少し大掛かりなプログラムを製造する為 の本格的なツールなので、説明も簡単にはいきません。

y.cをエラーメッセージ無しにコンパイルするのは UNIX系では cc -c y.c とします。 成功すればy.oができます。 x.c,z.cにmainがある場合 cc x.c y.o でa.out(実行可能ファイル)を作り cc -o z.exe z.c y.o でz.exe(実行可能ファイル)を作ります。

0

質問の全体像がわからないのですが、、、 あと、x.c と y.c は別かな? それが間違ってる? x.c(またはy.c)に書いた関数の下に void main() { function(); // ソースコードの関数を呼び出してあげる } と書けばいけるんじゃないでしょうか。

0

main関数を追加してください。

ID非公開

質問者2022/5/24 15:56

しかし、教科書にはどこにもmain関数を使った記述がないのでどうしたら良いのでしょうか?