C言語を使っていてプリプロセッサ命令の#defineを知らない人はいないだろうし、#if・#ifdef辺りも知られていると思う。
でも#lineとか#errorはあまり知られていない気がする。
#lineは、元となったソースのファイル名と行番号を示すもの。
(コンパイラーによっては、)コンパイルエラーになった時に、その元となったファイル名を表示してくれる(かもしれない)。
逆に言うと、本当にエラーが出た場所が分からなくなる可能性もあるけど^^;
#errorは、コンパイルエラーを発生させるもの。
ヘッダーファイルがちゃんと読み込まれているかどうか・あるいは記述されている定義が#if等によって無効になっていないかどうかを確認する為に、#errorを埋め込んで、そのエラーが出るかどうかで判定する…なんて使い方が出来るかも。
C言語で「(定義されているはずの)構造体が見つからなくてコンパイルエラーになる」というような場合、その定義近辺で何か間違っている可能性が高い。
定義がきちんと読み込まれているかどうかの確認に#errorが使えるんじゃないかなーと思う。
※コメント投稿者のブログIDはブログ作成者のみに通知されます