• ベストアンサー

初歩的プログラミング(C言語)

あるサイトを見つつ、C言語を学んでみようかと思い、コンパイルする直前までこぎつけました。 #include <stdio.h> void main () { printf("Hellow World!"); } とメモ帳などで打ち、 test.cとして保存しました。 cygwinでコンパイルしようとしたところ、 test.c:In function `main': test.c:4: warning:ruturn type of 'main' is not `int' と表示され、コンパイルできません。 他所でコンパイラの問題では?と言われていたのでVisual C++を使い、 ビルド、デバッグなしで開始、とすると Hello World! 続行するには何かキーを押してください... となり、成功しました。 Visual C++ を使えば問題ないのですが、どうしてcygwinではできないのか・・・と思いました。 そして確かに Visual C++で デバッグなしで開始 とすると実行できるのですが、実行ファイル(exe)というのができるときいていたのでできておらず、少し戸惑っています。 あと、Visual C++についているコマンドプロンプトを使ってできるのかな・・・とも思いましたが、使い方がよくわかりません。 私がCとC++をこんがらがって考えている(CとC++ってほとんどいっしょ?などと)せいなのかもしれませんが、教えていただけたら助かります。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4835/10236)
回答No.2

>test.c:4: warning:ruturn type of 'main' is not `int' > >と表示され、コンパイルできません。 コンパイル出来ていますよ。warning というのは警告という意味で、エラーではありません。 void main () と書いていますが、mainはint型なので、 int main() と書くのが正しく、そのことを指摘する警告です。 参考にしたサイトに、void と書くように書いてあったのなら他の部分もそのサイトは怪しいかもしれません。 なお、警告だけでエラーが無ければa.exeが出来ており実行は出来るはずです。 a.exe を実行してみましょう。 C++はCと似ていますが別の言語で Cがまだ理解できていなければC++は理解困難でしょうね。

language00
質問者

お礼

素早い回答をどうもありがとうございました。 確かにできていました。気付かなかったようです・・・すいません。 実行してみたところ、何か(?)が立ち上ってすぐに消えました。 これでいいのでしょうか?どこかが間違っている気がします・・・ 気がするだけならうれしいのですが なんにせよどこかにVitualを使ったほうが他のプログラムなどもVitualで作られているのでいいと書かれていたのでVitualを使ってみたいと思います。 VitualはCとC++がありますが、C++を使ったほうがいいのでしょうか? C++でやったところ、exeファイルではなく、違った形の形式で実行・作成(?)されているようなので・・・ さっきもう一度確認してみたところ、VitualC++で作ったものが exeファイルとしてできていました。 少し考えて思ったのですが、 ビルド≒コンパイル と捉えていいのでしょうか? 少しずつわかってくると小さな疑問が浮かんできてしまって・・・ 教えていただく身ですが、よろしくお願いします。

language00
質問者

補足

失礼しました・・・お礼の欄を書いたあとに気づいたのですが、 CとC++ではなく、C#とCアンドC++の間違いですね。 C#はこれまた難しそうなのでVitualC++に落ち着こうかと思います。

その他の回答 (3)

  • utakataXEX
  • ベストアンサー率69% (711/1018)
回答No.4

他の方の回答で解決しているようですが、締め切っていないので、1点蛇足の補足です。 >実行してみたところ、何か(?)が立ち上ってすぐに消えました。 >これでいいのでしょうか?どこかが間違っている気がします・・・ >気がするだけならうれしいのですが コマンドプロンプトが一瞬、起動して消えたのでしょう。 正常な動きです。 コマンドラインのプログラムなので、コマンドプロンプト立ち上げ後、exeのある場所まで移動して、そのexe名を打てば、「Hello World!」が表示されると思います。 Visual C++の場合は、「その場所に移動する」「実行後PAUSEする」と言う部分が補完されているので、 Hello World! 続行するには何かキーを押してください... のようになるのです。

language00
質問者

お礼

なるほど・・・ と、いうことは正常だったのですね。 わかりやすい意見をありがとうございます。 少し気になっていた部分なのでとてもためになりました。 最後にひとつ・・・ Vitual C++の付属品のVitual Studio 2008コマンドプロンプトと最初からあるコマンドプロンプト・・・同じものなのでしょうか? くだらない質問かもしれませんが、ご教授願います。

  • asuncion
  • ベストアンサー率33% (2126/6286)
回答No.3

>ビルド≒コンパイル コンパイルはビルドの一部です。=でも≒でもありません。 ソースコードをコンパイルすると、オブジェクトコードができます。 次に、単数または複数のオブジェクトコードと、ライブラリーとを結合させて実行形式のファイルを作ります。この過程をリンクといいます。 コンパイルから始まって、実行形式のファイルを作るまでの 一連の過程を、ビルドと呼んでいる処理系があります。 ビルドは、マイクロソフトなどWindowsの処理系で使っている用語ではないかと思います。 UNIXを起源とする処理系では、ビルドという用語はあまり使わないような気がします。

language00
質問者

お礼

まとめると、 ビルドとはWindows系の処理系で・・・コンパイルし、そしてできたものとライブラリーなるものをリンクすること ということですね。 わかりやすい回答をありがとうございます。 参考意見ということですが、初心者にもわかりやすく書いていただき助かりました。

  • taka37777
  • ベストアンサー率30% (166/544)
回答No.1

詳細はcygwinでccのオプションなどを参照してみてください。$ gcc test.c -o test test.c: In function `main': test.c:4: warning: return type of 'main' is not `int' test.c:6:2: warning: no newline at end of file $ ./test Hellow World! ヘルプは $ man cc で見られます。

language00
質問者

お礼

回答をどうもありがとうございます。 ヘルプがあったのですね。 気づきませんでした・・・ 見てみようかと思います。 貴重な意見、ありがとうございました。

関連するQ&A

  • C言語に詳しい方お願いします

    #include <stdio.h> void main() { printf("Hello, World!"); return 0; } Visual C++2008 を使ってこのコードで、 「デバッグなしで開始」とすると・・・ 1>------ ビルド開始: プロジェクト: test, 構成: Debug Win32 ------ 1>コンパイルしています... 1>cl : コマンド ライン error D8045 : C ファイル '.\test1.c' を /clr オプションと共にコンパイルできません 1>test - エラー 1、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== と出てしまいます。どうしたらエラー0になりますでしょうか? また、エラーが出る原因は何でなんでしょうか? ちなみにC言語は今日始めたばかりです。

  • cygwinwをC言語のコンパイラとして使う方法

    cygwinをダウンロードして、 さっそくCのコンパイラとして使おうと思って#include<stdio.h> int main(void) { printf("Hello, World!");} を、ダウンロードの際に作られたhomeというフォルダに入れて、 gcc hello.c (hello.cというファイル名にしました) と入力しましたが、 hello.c:3:28: warning: no newline at end of file と出てきてしまい、実行ファイルを作れませんでした。 どうやったらコンパイルができるようになるか、 どんなことでもいいので、ご存知の方、 どうか教えてください! (メモ帳、windowsXPを使っていて、 恥ずかしいことですが、バージョンはわかりません・・・ 超初心者です、ごめんなさい・・・)

  • 初めてのプログラミング

    学校の授業でC言語(C++ではありません)を勉強することになりました 学校ではvisual c++ 6.0を使用しています。 自宅のPCにも全く同じ物をDLしようとしましたがありませんでした。 そこでいろいろ調べてみて エディタ:CPad コンパイラ:Borland C++ Compiler をDLしてインストールしました。 エディタは問題なく使用できるのですがコンパイラをうまく使うことが出来ない為、実行も出来ません #include <stdio.h> int main(void) { 本文・・・ return(0); } って感じにエディタに記述して、拡張子を.cにして保存 その後コンパイルしようとしても出来ず・・・ もしかしてBorland C++ Compiler のコンパイラではC言語はコンパイル出来ないのでしょうか? 調べてもよくわからないので教えていただけないでしょうか? お願いします

  • Visual C++ 2010 Express: [デバッグなしで開始

    Visual C++ 2010 Express: [デバッグなしで開始] 実行時もコンソールが閉じる Visual C++ 2008 Expressでは、 [デバッグなしで開始](Ctrl + F5)を実行すると、 出現したコンソールが、キー入力を待つ状態になっていたのですが、 Visual C++ 2010 Expressでは、同じ操作では 実行後にコンソールが閉じてしまいます。 Visual C++ 2010 Expressでも、[デバッグなしで開始]を 実行した後に、コンソールを閉じなくする方法があるのでしょうか? C言語の勉強中です。 最近コンピュータを新しくしたので、 ついでにVisual C++ 2010 Expressをダウンロードしたのですが、 プログラムの実行が確認できなくて困っています。 よろしくお願いします。

  • C言語のコンパイラについて教えてください。

    C言語の勉強をしてるのですが、コンパイルすると普通にミスは認められず表示されたので、実行してみて入力とかしてみたら、途中で画面に「問題が発生しました。ご不憫をおかけします。この問題をマイクロソフト社に送信してください。ってでちゃって、組んだプログラムのテストみたいなのを出来ないことが多々あるのです。これはいったいどのような事がおこってるのでしょう?Bolrand社のC++って書いてあるコンパイラを使用してます。コンパイルされたからってミスはなかったなんてことはないということでしょうか?? お返事よろしくお願いいたします。

  • Visual C++ 2005のコンパイル方法

    Visual C++ 2005というソフトを使ってプログラミングをしているのですが、コンパイルの方法がわかりません。確か出力→デバッグ開始だっとような気がするんですが、デバッグができないのでコンパイルもできません。ちなみに元のソースは学校でLinuxでemacsを使用して作ったものなので、一からVisual C++ 2005で作ったものではありません。 回答お願いします

  • C/C++ (Visual Studio 2010) で、ネットワーク

    C/C++ (Visual Studio 2010) で、ネットワークプログラミングをしてみたいのですが、 "Hellow World!" のような、一番簡単な例みたいなものはありませんでしょうか?

  • FedraCore4でのC言語

    簡単なCのプログラムをテストしようとしたのですが、コンパイラが見つかりません。 パッケージを全部インストールしていない状況でC言語のプログラムををコンパイルするにはどうすればよいのでしょうか?

  • コンパイルについて

    プログラミング超初心者です。 今年からプログラミングの授業があるので家のパソコンでもプログラミングの出来る環境を作ってみました。 エディタソフトはVisual C++2008を使用することにしました。コンパイラソフトは学校と同じcygwinをインストールしてみました。 質問なんですがVisual C++2008でソースコードを入力し、それをcygwinでコンパイルすることは出来るのでしょうか? 理由はVisual C++2008でコンパイル出来ることは、わかってるのですが学校でcygwinを使用してるので慣れるために別々に使用したいからです。もし出来るのならばやり方を教えてもらえないでしょうか? ちなみに学校では、エディタソフトが秀丸を使用しコンパイラソフトはcygwinを使用してます。 もし他におすすめのソフトがあれば教えてもらうと助かります。よろしくお願いします。

  • プログラミング初心者ですが…

    変な質問ですみませんが…。 C言語の入門書でプログラミングをしていて、 <windows.h>というものが出てきました。 このwindowsというのはOSのWindowsとは関係ないんでしょうか? Linuxでも使えますか? sleep()関数とSleep()関数は違うのでしょうか? コンパイルするとエラーは出ませんでしたが、 sleep(1000)で実行すると、処理が途中で止まってしまいました。 Sleep(1000)とすると、動きました。 コンパイラはcygwinです。