VScodeでPython, c/c++を使う際には、エディター画面で右クリック、Run Codeをクリックすると実行しちまうんだよおおぉぉぉん。これ、便利。
なので出版社から例題をdownloadしたら、このクリック作戦で動作確認する。クリック、クリックたのしーーーー(笑)
ところが、昨日、ドンづまりしたのである。c/c++の場合に、Run Codeをクリックすると gcc が起動するのである。これだとエラー出てだめな例題があったばい。
g++だとoKだが、これは手動で > g++ hagehage.c とか叩くである。ワタクシはクリック教の敬虔な信者なので、我慢できんばい。Run Codeわクリックした時に、gccではなくて g++を起動するようにしたいのであるばい。
だが、その前にgcc, g++の違いってなんじゃらほい。ワタクシは単純にgccはC言語用、g++はc++用だと思っていた。あってるか? あってないようだな、gccでもc++コンパイルできるようだし。うーーむ。g++は gcc にコマンドオプション設定しているのと同じだとか書いてあるの見たばい。
しかーーし、c++はg++を使えというとる人が多々いるし。
待て待て、ではワタクシを動かそうとしているソースコードはc言語なのかc++での記述なのか、どっちなんかーーーい?
printf()があったのでc言語だと思ったのだが、さらにズラズラと眺めたら、new なんてのがあった。これはインスタンスを作るのでc++なんだな、このコード。
これは作者がCなのかC++なのかも書かず、どのコンパイラのどのバージョンで動作確認したとかも書かずのクソ本のものなので(笑)
というわけで、手動でg++使うと正常動作した。手動でgcc だとエラーであり、Run Codeもエラー出した。
つーことは、Run Codeの場合に g++が起動すればよござんす・・・と思うのだが、どうすればそうなる? どっかの設定がどーたらこーたら?
Extensionは推奨通りやったがなあ。。。。
敬虔なクリック教徒としては、どうしてもクリックだけでやりたいのであるばい。手動でキーボード叩いてって・・・・原始宗教みたいでイヤだす。
さらにdownloadしたファイルはshift-jisであってVScodeのEditorはutf-8なので例によって文字化けにぎやかですわ(笑)
待てよ、*.cppとすれば Run Codeで g++ が起動するのではないか? やってみようって。
Terminalをみると g++ を起動しようとしているがエラーだ。
if ($?) { g++ Example3_1_1.cpp -o Example3_1_1 } ; if ($?) { .\Example3_1_1 }
ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。
あらら、まーーー。
えーーと、まずい事やちまったの一つ気づいた。このFolderのPathに日本語たくさん・・・・・Pathに日本語があるとマズイ・・・場合があるとか。
hagehage.cppを別のドライブの日本語なしのFolderにコピペしてVScodeでRun Codeしたらg++が起動して動作したのであります。てへてへ。
*.cpp であれば g++ が起動する。その場合にPathに日本語があるとコケた。
うーむむむ。そーか、だから著者は例題を *.txt としていたのかあ。。。。 ってかね。ワケワカラン。何度も書くが普通は〇〇というコンパイラのバージョン△△で動作確認しましたと書くものなのにい。
とりあえず、Pathの日本語がないFolder作ってテストする。
なんちゆーこっちゃ。ワタクシの痛恨のミス!! ってほどでもないけどな。手動では動くし。
教訓 VScode Run CodeではPathに日本語があると動作しない場合がある。日本語があり空白があり、だと解析失敗するんだろ、と想像。
*.c の場合、Run Codeはgccを起動する。
*.cpp の場合、Run Codeはg++を起動する。
敬虔なクリック教徒であるワタクシはCUIは大嫌いじゃ(´・ω・`)