C 言語
- Q:
assert(exp);
ってなんですか?
- Ans:
exp
が常にtrue
になっていることを確認するための文です。例えば、stack の段数が常に 0 以上であることを確認したければ、assert(stack >= 0);
とか書いておけばよいわけです。加えて、プログラムが完成して、assert チェックが不要になった場合は、NDEBUG
というマクロ変数を定義すれば、チェックは行われないようになります。
- Q:
if(DEBUG) ...;
ってなんですか?
- Ans: デバッグ時だけ実行したい処理(よくあるのはデバッグプリント)を記述する方法です。鎌田がよくやるのは、デバッグ中は
#define DEBUG 1
としておき、デバッグが終わったら #define DEBUG 0
に変更すれば、プログラムをほとんど書き換えずに、デバッグ中だけおこないたい処理を記述できます。デバッグのエラーレベルを設けて、if(DEBUG>1) ..レベル2以上の処理..;
みたいな使い方も可能です。
VS Code
コード管理 (Git)
- Q: git pull がうまくいかない
- Ans: 先生方の更新と、皆さんのファイル更新が競合したときに起こります。ただ、普段は起きないようにしているはずなんで、なぜ起こったのか、本当は確認したいところ。
- 対処法:git のメッセージを確認して、競合が起きているファイルを見ましょう。その上で、皆さんの変更が要らないもの(なぜか入出力データを書き換えちゃったとか)なら、VS code の「コード管理部」で、当該ファイルの「更新を破棄」を選んでください。皆さんが意図してファイルを更新していた場合は、競合を解決しなくてはいけません。git に詳しくない場合は、とりあえず当該ファイルのコピーを確保してから「更新を破棄」して、ファイルの中身を見比べてください。