- ベストアンサー
windowsのコンパイラーとgccのコンパイラーでのエラーの違いとは?
- windowsのコンパイラーで正しく実行されたのに、gccのコンパイラーでエラーがでる理由について考えてみましょう。
- Linux(Red Hat9)環境でのgccコンパイラーでは、ソースコードの一部がエラーとして検出されます。
- 具体的には、`main`関数の戻り値の型が`int`である必要があるため、`void`ではエラーとなります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
> LinuxのGUIの画面ではtestはバイナリーになっていて、何かのプログラムと関連付けを要求します。 アイコンダブルクリックとかで実行しようとしてるのでしょうか?普通にコンソールで実行しましょう。関連づけなんて必要ないです。 > 念のため、オッシャルように./.を着けてやっても、(sshから)エラーが返されます。 "./."ではなく"./"です。つまり"./test"と実行してください。ただし、実行ファイルのディレクトリにいないとダメです。別のディレクトリにいるときはcdするか、フルパスで実行してください。 SSHに関してはよくわかりません。リモートで実行するするということなのかな?とりあえずローカルで試してみてください。ローカルでうまくいくのにリモートでうまくいかないということなら再度質問しましょう。問題を解決するコツはできるだけ単純化して考えることです。 このあたり、自分でプログラムを組む、組まないにかかわらず、Linuxを使用する場合の基本です。がんばって勉強してください。健闘を祈ります。
その他の回答 (2)
- neKo_deux
- ベストアンサー率44% (5541/12319)
> Linuxでは、出来ているということはわかりますが、実行の方法が分かりません。 出来たファイルはa.outとかでしょうか? その場合、カレントのパスなどを付けて、 ./a.out のようにしないと実行できない設定になっている場合があります。最近は割りと標準。 -- ファイルを片っ端から削除する「ls」という名前のプログラムがあったような場合、誤動作を避けるような意味があります。
補足
ls コマンドでみると、test test.cがあります。LinuxのGUIの画面ではtestはバイナリーになっていて、何かのプログラムと関連付けを要求します。適当な、テキスト画面が出るものと、関連付けしてみましたが、黒い画面が、一瞬立ち上がったきりでした。 a.outでは ありません。念のため、オッシャルように./.を着けてやっても、(sshから)エラーが返されます。そのようなファィルはナイト!
- neKo_deux
- ベストアンサー率44% (5541/12319)
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のコンパイラーでエラーが起きないのは、ちょっとした優しさ、親切心みたいなもんです。 エラーチェックのレベルを厳しくしても大丈夫でしょうか?
補足
int mainとしてreturn 0;にもどしたら、出来ました。 色々な規格がcにもあるのですね! できた実行ファィルがgccでは、この場合.exeなしの testですが、windosでは、即、実行してくれますが、Linuxでは、出来ているということはわかりますが、実行の方法が分かりません。 Linuxの方に戻り、ファィルの関連付けをやっても、あまり正確には、実行できません。この場合、sshでwindowsから操作して”test”ファィルを実行させるにはどうすればいいのですか?
お礼
./testで成功しました。ありがとうございました。 リモートで動かしているのは、サーバー構築のためにずっとwindowsからsshを通じてputty等の画面でやっています。動いているLinuxのcpuが遅い場合は、ラクでした。普段はLinuxのGUI画面は使用していませんので! とりあえず、お礼まで