プロが教えるわが家の防犯対策術!

あるサイトを見つつ、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++ってほとんどいっしょ?などと)せいなのかもしれませんが、教えていただけたら助かります。

A 回答 (4件)

他の方の回答で解決しているようですが、締め切っていないので、1点蛇足の補足です。



>実行してみたところ、何か(?)が立ち上ってすぐに消えました。
>これでいいのでしょうか?どこかが間違っている気がします・・・
>気がするだけならうれしいのですが

コマンドプロンプトが一瞬、起動して消えたのでしょう。
正常な動きです。
コマンドラインのプログラムなので、コマンドプロンプト立ち上げ後、exeのある場所まで移動して、そのexe名を打てば、「Hello World!」が表示されると思います。

Visual C++の場合は、「その場所に移動する」「実行後PAUSEする」と言う部分が補完されているので、

Hello World!
続行するには何かキーを押してください...

のようになるのです。
    • good
    • 0
この回答へのお礼

なるほど・・・
と、いうことは正常だったのですね。
わかりやすい意見をありがとうございます。
少し気になっていた部分なのでとてもためになりました。

最後にひとつ・・・
Vitual C++の付属品のVitual Studio 2008コマンドプロンプトと最初からあるコマンドプロンプト・・・同じものなのでしょうか?
くだらない質問かもしれませんが、ご教授願います。

お礼日時:2009/02/08 16:21

>ビルド≒コンパイル



コンパイルはビルドの一部です。=でも≒でもありません。

ソースコードをコンパイルすると、オブジェクトコードができます。

次に、単数または複数のオブジェクトコードと、ライブラリーとを結合させて実行形式のファイルを作ります。この過程をリンクといいます。

コンパイルから始まって、実行形式のファイルを作るまでの
一連の過程を、ビルドと呼んでいる処理系があります。

ビルドは、マイクロソフトなどWindowsの処理系で使っている用語ではないかと思います。
UNIXを起源とする処理系では、ビルドという用語はあまり使わないような気がします。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/02/07 20:26

>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++は理解困難でしょうね。

この回答への補足

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

補足日時:2009/02/07 19:23
    • good
    • 0
この回答へのお礼

素早い回答をどうもありがとうございました。
確かにできていました。気付かなかったようです・・・すいません。
実行してみたところ、何か(?)が立ち上ってすぐに消えました。
これでいいのでしょうか?どこかが間違っている気がします・・・
気がするだけならうれしいのですが

なんにせよどこかにVitualを使ったほうが他のプログラムなどもVitualで作られているのでいいと書かれていたのでVitualを使ってみたいと思います。
VitualはCとC++がありますが、C++を使ったほうがいいのでしょうか?
C++でやったところ、exeファイルではなく、違った形の形式で実行・作成(?)されているようなので・・・

さっきもう一度確認してみたところ、VitualC++で作ったものが exeファイルとしてできていました。
少し考えて思ったのですが、 ビルド≒コンパイル と捉えていいのでしょうか?

少しずつわかってくると小さな疑問が浮かんできてしまって・・・
教えていただく身ですが、よろしくお願いします。

お礼日時:2009/02/07 18:59

詳細は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
で見られます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/02/07 19:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!