質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

3回答

1200閲覧

c++ コンパイルエラーの読み方

nyantama

総合スコア11

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/10/29 06:52

編集2021/10/29 06:55

c++では、ほんの少しのコーディングミスでも、何十行といったコンパイルエラーメッセージが出力される場合があります。そこで質問なのですが、c++プログラマは普段どうやってコンパイルエラーを読んでいるのでしょうか?目視でエラー内の重要箇所を探しているのでしょうか?
僕が考える解決方法としては、エラーメッセージをファイルに出力する方法です。こうするとまだマシな気がするのですが、コンパイルエラーをファイル出力する方法がググっても見つかりません。やり方を知っている方がいれば教えてもらいたいです。
標準エラーの場合は、

bash

1build/main 2> err.log

などとすればいいのですが、コンパイルエラーの場合はこれができません。。。

ご回答よろしくおねがいします。

P.S

環境

  • MacOS
  • VSCode
  • c++11

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

int32_t

2021/10/29 06:54

ふだんエディタやIDEは何をつかっていますか?
nyantama

2021/10/29 06:55

追記しました汗!
int32_t

2021/10/29 07:23

どうやってコンパイルしていますか? ターミナル内? vscode内?
nyantama

2021/10/29 07:27

vscode のターミナルで c++11コマンドを実行します。
int32_t

2021/10/29 07:36

vscode のターミナルで コンパイルしているのだったら、ターミナルをスクロールできるのでファイルに出力する意味はあまりない気がします。
BeatStar

2021/10/29 07:44

Windows上ですが、試しにやってみたところ、普通に g++ -o main main.cpp 2> error.txt みたいにしてもできましたが。
退会済みユーザー

退会済みユーザー

2021/10/30 03:06

上から順に潰していけばいいだけですよ。芋づる式に出ているエラーもありますし。 あとはint32_tさんのおっしゃるとおり、IDE(vscode)に頼ります。問題(Problem)部分に一覧が出る上、ソースコードの該当箇所に波線が出るので視認しやすいです。最近だとIntelliSenceが自動的にコンパイルかけてくれたりするので、ある程度まではビルドしなくても検出してくれて楽ですよ。 あとビルドツールの場所やヘッダ/ライブラリや仕様バージョン(C++11)などは設定しないと意図したエラーにならないことがあるので注意してください。
guest

回答3

0

c++では、ほんの少しのコーディングミスでも、何十行といったコンパイルエラーメッセージが出力される場合があります。そこで質問なのですが、c++プログラマは普段どうやってコンパイルエラーを読んでいるのでしょうか?目視でエラー内の重要箇所を探しているのでしょうか?

そういう面倒な事態にならないように,まめにコンパイルします

コンパイル頻度が高ければ,一度に怒涛のコンパイルエラーが! なんてことにもなりにくいでしょうし.

仮にエラーメッセージが大量に出ようが,
(大抵の場合には)「前回コンパイルが通った時点から現在時点までにいじくったり追加した箇所」に問題があります.
言い換えれば,
「コンパイルエラーになったとしたら,その引き金となった記述箇所はどこだろうか?」という範囲は,コンパイルを行う時点でほぼほぼ絞られている,という感じです.

投稿2021/10/29 08:14

編集2021/10/29 08:15
fana

総合スコア11996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fana

2021/10/29 08:19

少なくとも,私がボチボチとコーディングしてきた範疇では, コンパイルエラーのメッセージをファイルに出力したいとか思ったことはないですね.
pepperleaf

2021/11/20 10:55

いや、時々ある。 特に某所のコードはワーニングの山。ファイルに落とさないと、最初のエラーなんてすぐ消えます。 人のコードなんで勝手に変更はNG。 もっとも、 | (パイプ) more (or less)でも見れますが。
guest

0

基本的にはエラーの先頭部分にヒントがありますが、
他の方が回答しているようにこまめにコンパイルして、編集した部分を明確にする事が重要です。
もっといえば、gitでソースを管理するのは現代において必須とすら言えるくらい重要なので、
gitでソース管理をしていないのであれば、まずそこからするべきです。
コンパイルが通って問題なく実行できるところでコミットする事をこまめに行っていけば、
原因がつかめずに立ち往生した場合にgitで以前の正常にコンパイルできたところまで戻せます。

投稿2021/11/20 10:37

mingos

総合スコア4207

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

いまひとつ何に困っているのかはっきりしないのですが、vscode を使っているのなら、vscodeのターミナルではなく、vscodeの機能でビルドしたほうが良い気がします。

たとえば、「Code Runner」拡張機能を入れて"Run Code"ボタンを押すとコンパイルエラーは PROBLEMS のところに整理されて表示されます。

投稿2021/10/29 07:39

int32_t

総合スコア21695

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問