• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:windowsのコンパイラーで正しく実行されたのに、gccのコンパイラーでエラーがでた)

windowsのコンパイラーとgccのコンパイラーでのエラーの違いとは?

このQ&Aのポイント
  • windowsのコンパイラーで正しく実行されたのに、gccのコンパイラーでエラーがでる理由について考えてみましょう。
  • Linux(Red Hat9)環境でのgccコンパイラーでは、ソースコードの一部がエラーとして検出されます。
  • 具体的には、`main`関数の戻り値の型が`int`である必要があるため、`void`ではエラーとなります。

質問者が選んだベストアンサー

  • ベストアンサー
noname#223623
noname#223623
回答No.3

> LinuxのGUIの画面ではtestはバイナリーになっていて、何かのプログラムと関連付けを要求します。 アイコンダブルクリックとかで実行しようとしてるのでしょうか?普通にコンソールで実行しましょう。関連づけなんて必要ないです。 > 念のため、オッシャルように./.を着けてやっても、(sshから)エラーが返されます。 "./."ではなく"./"です。つまり"./test"と実行してください。ただし、実行ファイルのディレクトリにいないとダメです。別のディレクトリにいるときはcdするか、フルパスで実行してください。 SSHに関してはよくわかりません。リモートで実行するするということなのかな?とりあえずローカルで試してみてください。ローカルでうまくいくのにリモートでうまくいかないということなら再度質問しましょう。問題を解決するコツはできるだけ単純化して考えることです。 このあたり、自分でプログラムを組む、組まないにかかわらず、Linuxを使用する場合の基本です。がんばって勉強してください。健闘を祈ります。

koro5917
質問者

お礼

./testで成功しました。ありがとうございました。 リモートで動かしているのは、サーバー構築のためにずっとwindowsからsshを通じてputty等の画面でやっています。動いているLinuxのcpuが遅い場合は、ラクでした。普段はLinuxのGUI画面は使用していませんので!  とりあえず、お礼まで

その他の回答 (2)

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.2

> Linuxでは、出来ているということはわかりますが、実行の方法が分かりません。 出来たファイルはa.outとかでしょうか? その場合、カレントのパスなどを付けて、 ./a.out のようにしないと実行できない設定になっている場合があります。最近は割りと標準。 -- ファイルを片っ端から削除する「ls」という名前のプログラムがあったような場合、誤動作を避けるような意味があります。

koro5917
質問者

補足

ls コマンドでみると、test test.cがあります。LinuxのGUIの画面ではtestはバイナリーになっていて、何かのプログラムと関連付けを要求します。適当な、テキスト画面が出るものと、関連付けしてみましたが、黒い画面が、一瞬立ち上がったきりでした。 a.outでは ありません。念のため、オッシャルように./.を着けてやっても、(sshから)エラーが返されます。そのようなファィルはナイト!

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

int main として下さい。みんなの幸せのためです。 KOHNO TAKASHI HOME PAGE - C言語 FAQ 日本語訳 - 11章 ANSI/ISO規格C http://www.kouno.jp/home/c_faq/c11.html -----以下引用----- 11.12: main()をvoidとして宣言して「mainの戻り値がない」という目障りな メッセージを消すことができるか。 A: できない。main()はintを戻り値とし、(適切な型の)0個か2個の引数 を持つと定義しなければならない。exit()を呼んでもまだ警告が出る のであれば、冗長であるがreturn文を挿入するしかない(あるいは使 える環境にいるのであれば「ここには届かないよ:NOTREACHED」命令 を使う)。 References: ANSI Sec. 2.1.2.2.1, Sec. F.5.1; ISO Sec. 5.1.2.2.1, Sec. G.5.1; H&S Sec. 20.1 p. 416; CT&P Sec. 3.10 pp. 50-51. -----以上引用----- -- > なぜ、同じソースコードでエラーが起こるのですか? windowsのコンパイラーでエラーが起きないのは、ちょっとした優しさ、親切心みたいなもんです。 エラーチェックのレベルを厳しくしても大丈夫でしょうか?

参考URL:
http://www.kouno.jp/home/c_faq/c11.html
koro5917
質問者

補足

int mainとしてreturn 0;にもどしたら、出来ました。 色々な規格がcにもあるのですね!  できた実行ファィルがgccでは、この場合.exeなしの testですが、windosでは、即、実行してくれますが、Linuxでは、出来ているということはわかりますが、実行の方法が分かりません。 Linuxの方に戻り、ファィルの関連付けをやっても、あまり正確には、実行できません。この場合、sshでwindowsから操作して”test”ファィルを実行させるにはどうすればいいのですか?

関連するQ&A