cerr,endl

久し振りに時間が取れたので、Qt4の勉強をちょこっと再開してみた。
ところが、例題として書かれてた 「cerr」「endl」でエラーが発生して、はまってしまったw

iostreamではまってるというのはエラーメッセージでわかったので、超簡単なテストプログラムを買いてみる。
まんまHelloWorldになったな。C++なんてやったことないのがまるわかりだwww

#include <iostream>

int main(){
  cerr << "test" << endl;
}

g++ でコンパイルしてみると、

test.c: In function ‘int main()’:
test.c:4: error: ‘cerr’ was not declared in this scope
test.c:4: error: ‘endl’ was not declared in this scope

インクルードパスを指定しなあかんのかと思って、マクブク内で/usr/include以下にiostreamを探すと、/usr/include/c++/4.0.0にあったので、-Iオプションに指定してコンパイルしてみても同じエラー、、、、orz


検索してみると→ http://www.geocities.jp/ky_webid/cpp/library/029.html
のページがみつかった。「std::cout」って書いてあるので、書き直し

#include <iostream>

int main(){
  std::cerr << "test" << std::endl;
}

こうすると、-Iオプションなしでもコンパイルできた。やた。
で、もちょっと調べてみると → http://sealsoft.jp/namespace.html
のページが見つかった。なるほど、名前空間の指定なわけだ。perlと同じかな。
最新のC++では「std::」を付けなくてはならなくなったということみたい。


というわけで、最終的にはusing namespaceを使って書く。そうすることでstd::を毎回書かずに済むわけ。

#include <iostream>
using namespace std;

int main(){
  cerr << "test" << endl;
}

以上。今日のハマリポイントでした。