こんにちは､ ようこそ｡
このビデオでは､ コンパイラエラーとは何かについて説明したいと思います｡
このあたりまでは｡
そうですね｡
私たちはいくつかのコードを書き､ ビルド出力ウィンドウでコンパイルコマンドを発行し､
エラーが発生したことを知りました｡
そうですね｡
通常､ コードにエラーがあるという素敵な説明がありますが､ それは一体どういう意味なのでしょうか？
だから､ プログラミング､ 言語のコードを書くとき､ プログラミング言語はとても､ とても厳しいです｡
ルールがあるのです｡
そして､ プログラムを実行可能にするためには､ そのルールに従わなければならないのです｡
コンパイラは､ 実際にコードの構文をチェックします｡
そして､ それが正しく､ 意味上のエラーがなければ､ ソースコードから機械語タイプのコードを生成し､ プログラムを実行することができます｡
そして､ そのルールに従わなければならないのですが､ そのルールは非常に細かいものです｡
それで､ 非常に細かいところまで気を配る必要があるのです｡
つまり､ コンパイラのエラーには2つの形があるのです｡
これらは､ 構文エラーや意味上のエラーという形で現れます｡
シンタックスエラーとは､ コードの構造に何か問題がある場合､ その言語の構文のルールに沿っていないことを指しますね｡
括弧を正しい正しいスペースに入れてない｡
発言をすべてセミコロンで追加しているわけではない｡
キーワードのスペルを間違えているのでは？
これらはすべて一般的な例です｡
セミコロンって､ 最初の頃は本当によく使うんですよね｡
だから､ 変数を宣言して､ それを5に代入しても､ 最後にセミコロンがなければ､ それはシンタックスエラーになる｡
その構造がおかしいんです｡
printf文を使っていて､ 二重引用符の中でprintf文と言っているのに､ 最後の二重引用符を忘れているのと同じことです｡
それは構文エラーです｡
そのため､ コンパイラがソースコードをスキャンしてこのエラーを発見した場合､
通常､ 正しい方向を示す説明的なエラーメッセージと､ 通常､ 行番号が示されます｡
そして､ これまでの動画でも確認できました｡
コンパイラが捕らえることのできるもう一つのタイプのエラーは､ セマンティックエラーである｡
ロジックエラーならともかく､ セマンティックエラーは通常､ 意味がおかしいということなので､ 必ずしもキャッチできません｡
プログラムの意図するところ｡
つまり､ 例えば､ 2つの変数AとBを加えるとして､ それらの変数が異なるタイプで､ 意味がなかったとしますよね？
AとBを足しても意味がない｡
コンパイラがこのようなセマンティックエラーを検出することもあります｡
その他のセマンティックエラーはロジックに関係するもので､ それらについてはこれから説明します｡
そして､ コンパイラは常にそれらを見つけるわけではありません｡
構造は正しく､ すべてがうまくいっていたのですが､ 論理的に何かが間違っていたのです｡
コードのロジックに間違いがあります｡
つまり､ セマンティックエラーとは､ コンパイラが何を捕らえることができるかということですが､
それはむしろ､ 型捕らえや､ 変数の型などに関する言語の異なるルールでやってはいけないことに関係しています｡
それでは､ C言語における構文や意味上の誤りについて､ よくある例をコードライトで見てみましょう｡
では､ コードライトで簡単なHello worldタイプのアプリケーションを紹介します｡
これは､ プロジェクトの設定から生成されるコードです｡
テンプレートとして保存している場合｡
とてもシンプルなコードですよね？
そして､ このファイルをコンパイルすると､ 構文にエラーがあるかないかを教えてくれるのです｡
もう一度右クリックして､ コンパイルと言うこともできます｡
そして今現在､ エラーは出ていないんですよね？
しかし､ 構文的にはすべてのルールに則っているのです｡
しかし､ シンタックスには､ やはり､ コードの構造すべてが含まれます｡
つまり､ セミコロンがなかったり､ インクルードの前にポンド記号がなかったりすると､ それをコンパイルしようとします｡
エラーがあることがわかると思いますが､ 通常､ エラーコンパイラエラーには何らかの意味があるのです｡
しかし､ コードを書く量が増え､ 練習を積めば積むほど､ コンパイラはそれほど難解なものではなくなります｡
例えば､ このエラーは1行目にエラーがありますと表示されていますね？
それで､ いいんです｡
これをダブルクリックすればいい｡
そのエラーになるのですが､ expected equals know semicolonと表示されます｡
何が悪いのかがよくわからない｡
プログラミングの練習をしていると､ あ､ ポンド記号を忘れていた､ と気づくことがありますよね｡
だから､ プログラミングを始めたばかりの人には､ コンパイラエラーの中には説明的でないものもあるんだ｡
だから､ それを追加して､ ポンド記号を追加して､ 再コンパイルすればOKです｡
standard i o のスペルを間違えてしまうと､ 検索できないことがあります｡
それで保存して再コンパイルすると､ もう少し説明的なことが書いてあるエラーが表示されます｡
ですよね？
そのようなファイルやディレクトリはありません Stdio. を使うと､ 「あ､ スペル間違えたかな」とわかるんです｡
だから､ 誤字脱字はよくあるミスです｡
不揃いな括弧で物事を正しく捉えないとかね｡
括弧を忘れたり､ また､ コンパイルし直したり｡
そのエラーがどのようなものか見てみましょう｡
繰り返しますが､ これは超説明的ではありません｡
これは､ 基本的に､ 終了する中括弧の前に括弧があると言っているのですが､ これは､ この右括弧がこの下のどこかで終了すると思っていないからです｡
常に正確に伝えることはできません｡
だから､ 括弧や中括弧の欠落は､ 時として説明的でない｡
しかし､ セミコロンの欠落のようなものがあれば､ それはとても簡単なことです｡
そのコンパイルエラーは､ 何が起こっているのかを正確に教えてくれます｡
returnの前のセミコロンが､ そのセミコロンを置くべき場所を示してくれるような気がします｡
だから､ それをダブルクリックして､ ダブルクォートが足りない場合はセミコロンを入れて､ 再コンパイルするのです｡
そうでしょう？
今､ あなたは､ 基本的に欠落している､ 終端ダブルクォートと書かれた何かを見ています｡
また､ 最初の引用が行われた場所を指し示すような形で､ 本当は1つしかないのに､
複数のエラーが表示されます｡
そのダブルクォートがあればOKだったわけですね｡
さて､ このmainはintを返す必要があると言っています｡
実際に二重引用符の中のinsideのようなものを返そうとしたらどうでしょうか｡
繰り返しますが､ あなたは言語のその構造に従っておらず､ 基本的に関数型から文字ポインタを返していることを教えてくれます｡
繰り返しますが､ これらのコンパイルエラーは､ 今は意味がわからないかもしれませんが､ どんどんコードを書いていくうちに､
意味がわかるようになります｡
でも､ その仕組みに従うことが大事なんです｡
さて､ 構文的に意味を持たせるようなことをやっても､ 意味がおかしくなってしまう｡
つまり､ 例えばプリントFをした後に､ 8で割るとか7で割るとか､ そういう算術演算をしようとしたとします｡
保存してコンパイルしてみると､ 二重引用符の後に分割記号があるという意味不明なエラーが発生しました｡
セミコロンC 主に構文エラーやセマンティックエラーを見つけることができます｡
コードの意味は､ 通常､ 論理に関係するものである｡
意味不明なエラーは､ C言語プラスアルファのような言語を使用しているときに多く発生します｡
オブジェクトです｡
そのため､ コンパイラからのシンタックスエラーに注意する必要があります｡
よくあること誤字脱字の誤用｡
キーワード 始めるときに括弧を終わらせない 終止符と始まりのブロックがないときのコードのブロック
そして､ 複数のエラーが発生することがありますね｡
では､ 例えば「Hello world」としましょう｡
セミコロンが足りません｡
文字列を返しています｡
ブラケットが足りないから､ 作るんだよ｡
しかも､ これはかなり小さなプログラムです｡
しかし､ 今コンパイルしようとすると､ 複数のエラーが表示されますよね？
エラーが2つ｡
そして､ どこから手をつけたらいいのか､ みたいな､ ちょっと厄介な感じです｡
通常､ 1つのエラーが原因でさらにエラーが発生することがあるため､ 最初のエラーを修正します｡
だから､ 常に一番上にあるコンパイラのエラーを見て､ まずそれを修正したいのです｡
つまり､ 5行目のものを修正したいわけですね｡
そして､ 修正してから再コンパイルし､ そのあとの6行目のものを修正するのがよいでしょう｡
そして今､ ジェイソンと書かれている｡
つまり､ ゼロを返せということです｡ しかし､ 最初のエラーは必ず修正してから､ その後のエラーを修正するようにしてください｡
ところで､ 私たちのコードには常にエラーがつきものです｡
私たちは､ どんなに熟練したプログラマーでも､ シンタックスエラーを起こすことがあります｡
それでエラーが出るのはよくあることです｡
本当に大切なのは､ コンパイラから送られてくるメッセージを理解して､ それをどう修正すればいいかを伝えることです｡
そしてまた､ それは実践の中で得られるものです｡
コンパイラや一般的なコンパイラについては､ 今後のビデオで詳しく説明しますが､ とにかく言語の構造､
構文言語などを学びながら､ その構造に従うように心がけてください｡
次の数回の講義では､ さまざまな種類のエラーを持つことができることをお話しします｡
ロジックエラーについて触れました｡
また､ 警告についても少しお話します｡
また､ リンカーエラーやランタイムエラーについても説明します｡
ありがとうございます｡