高校三年生の合唱祭で何を歌いましたか?

 c++初学者です(cは少しだけ知っています).

 私が持っているc++の入門書には,「coutを使って文字を出力できる」旨書かれています.そこで,その本に載っているcoutを使ったサンプル(*1)を書いて実行してみたのですが,下のようなエラーが出ます.

> /var/tmp/ccT163831.o: In function `main':
> /var/tmp/ccT163831.o(.text+0x9): undefined reference to `cout'
> /var/tmp/ccT163831.o(.text+0xe): undefined reference to `ostream::operator<<(char const *)'

 本で使われているコンパイラはBorlandのもので,私が使っているものはgccです.

 coutを使って出力する方法はBorland特有の(あるいはその他いくつかのコンパイラだけで使われている)方法で,より一般的にc++を勉強したい場合は他の参考書を使うべきなのでしょうか.それとも,私の使っているgcc(ver 2.7.2.3)が古すぎる,あるいは何らかの設定が間違っていて使えない,ということなのでしょうか.

 どなたかご教授ください.

(*1)
#include <iostream.h>

void main(void)
{
cout << "this is a test.";
}

A 回答 (5件)

もしかしてコマンドを


gcc ファイル名
と入力しているのかい?
gccはCのコンパイラーだから
C++のライブラリであるcoutは読み込まないよ。

C++をGCCでコンパイルしたいならg++を使う。
g++ ファイル名
としてみて。
    • good
    • 0

gcc3.3.3だと、


c++ a.cpp (c++.exeがありました)
gcc -X c++ a.cpp (Xは大文字)

-X c++ で、C++モードを指定するといいみたいです
    • good
    • 0

> /var/tmp/ccT163831.o(.text+0x9): undefined reference to `cout'


> /var/tmp/ccT163831.o(.text+0xe): undefined reference to `ostream::operator<<(char const *)'

単にライブラリをリンクしてないだけじゃない?
libstdc++.a とか。
# コンパイラのマニュアルを参照してください。
# てゆっか、v2.7はちと旧い
    • good
    • 0

<iostream.h>



<iostream>
にしてみるとか

std::cout
にしてもいいと思います。

gcc だったらvoid main だと文句いわれないですか
(ver 2.7 は今使ってないので自信なし)

この回答への補足

 .h のまま cout を std::cout にしてコンパイルすると次のエラーが出ます(下のもので全部. void main のままなんですが…).

> In function `int main(...)':
> 5: `std' undeclared (first use this function)
> 5: (Each undeclared identifier is reported only once
> 5: for each function it appears in.)
> 5: parse error before `::'

補足日時:2005/12/24 18:03
    • good
    • 0

C++の書式では


#include <iostream>
using namespace std;

となります。
これで試してみてください。
(古い書式:質問者さんの書き方:でも通ると思ったが…

この回答への補足

 .h を消すと iostream: No such file or directory と出ます.

 .h を戻して using ... の行だけ足してコンパイルすると質問中に書いたエラーとあわせて次の行が出ます.

2: warning: namespaces are mostly broken in this version of g++

補足日時:2005/12/24 18:00
    • good
    • 0

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


おすすめ情報