- 資料をちゃんと読むこと。資料を読まないで質問していることが分かった場合、質問には答えません。
- エラーメッセージを読むこと。エラーが起きたらとりあえず質問する、というのはやめてください。 エラーメッセージを読み、自己解決を試みてください。
もちろん「資料を読んだけれども分からない」、「エラーメッセージを読んだけれども分からない」という質問は歓迎します。
コンパイラは gcc か clang のどちらかを推奨します。clang の方がエラーメッセージが親切です。
またオプション -Wall を使うとエラーだけでなく警告(Warning)も表示してくれます。コンパイルするときは clang -Wall apple.c というコマンドを使うとよいです。
コンパイルエラーのメッセージは
quickselect.c:10:37: error: ....
という形になっています。これは quickselect.c というファイルの10行目の37文字目にエラーがあるという意味です。
上記の ... のところに具体的なエラーの説明が入ります。
clangの場合エラーが起きたところを表示してくれるので分かりやすいです。
quickselect.c:30:32: error: expected ';' after return statement
if(end == m + k) return pivot
^
;
上記の例の場合、この場所でセミコロンを書き忘れていることがはっきり分かります。 エラーメッセージを見るだけではどうしてエラーが起きたか分からない場合は行番号をチェックしてその周辺を良く調べましょう。 また気がつきにくいエラーとして全角スペースが混入しているというものがあります。気をつけましょう。
実行時エラーはコンパイルエラーよりも原因を発見しにくいです。ほとんどの場合、実行時エラーはSegmentation faultだと思います。
Segmentation fault: 11
このエラーが起きる場合はほぼ2通りで、配列のインデックスが配列が確保されている範囲を超えているか 再帰呼び出しが無限に続いているかのどちらかです。
また、Floating point exceptionは0で割り算している場合におこります。