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; }
以上。今日のハマリポイントでした。