UbuntuでC++

C++を勉強して見ようと思いたって、hello worldを書いてのっけからエラーで動かなかったので記録しておきます。環境はubuntu16.04です。

//hello.cpp
#include <iostream>
int main() {
    std::cout << "hello world\n \t初めてのC++" << std::endl;
}

これで動きました。コンパイラーはg++で5.4.0。gppというのもあるらしいが使っていません。はじめコピペでダメだったので打ち込みました。後ろの方のendlにもstd::をつけないと動かなかった。

 
error: ‘endl’ was not declared in this scope

 

比較的最近名前空間の仕組みが入れられたらしくて、ネットのサンプルの表記に揺れがあります。

//hello02.cpp
#include <iostream>
using namespace std;
int main() {
    cout << "hello world\n \t初めてのC++" << endl;
}

という書き方の方が主流になる気がする。

 

感想 #include ではないのですね。iostreamのあとに.hもつけない。hはヘッダーのことだっけ。printfではなくて、cout <<なのはオブジェクト指向の影響なのかしら。<<という演算子とかnamespaceの::という演算子とかが新鮮というかなにか名前がないと困る。endlってなに。

 

追記:

   error: stray ‘\342’ in program
   const char BEEP = ’\a’;
   ^

というようなエラーは空白文字とか、asciiでない引用符とかが使われていると出ます。
テキストからコピペするとこのエラーでコンパイルできないのと、目で見つけるのがこんなんなのと、エラーの示している文字とエラーの発生している場所が違うことからけっこう苦労すると思う。苦労した。
全角空白文字はフォントを変えているので見つけやすくなったけど、クオーテーションマークは見た目では違いがわからない。


あと、アンダーバーunderbarというのかな、変数につかうやつ。もコピペではうまくいかないことがある。うまくペーストされずに空白になっていたりします。