表明 (プログラミング)
例えば (sizeof(int)==4) といった式である。また、関数定義内でないとswitch文が出現しただけでコンパイルエラーになるので、関数内でしか使えない。
もう1つのC言語でよく知られている静的表明の実装として、次の方式がある。
(BOOLEAN CONDITION) が偽と評価されると、配列の長さが負になるため、このコードはコンパイルエラーになる。たとえコンパイラが負のサイズの配列を許したとしても、初期値('!' の部分)を設定しようとした時点で問題に気付くだろう。
これを何度も使用するには、配列名がそれぞれ別々でなければならない。最近のメジャーなコンパイラにはプリプロセッサに __COUNTER__ というマクロ定義があり、出現の度に増加する数を返すので、それを名前に含める方法があるが、移植性はない。
Boost C++ライブラリではC++03以前でも利用可能なマクロBOOST_STATIC_ASSERTおよびBOOST_STATIC_ASSERT_MSGが用意されている。
例えば、次の疑似コードには2つの表明が含まれている。
x > 0 と x > 1 が表明であり、実行時のその時点でいずれも真である。
この例では、アントニー・ホーアが1969年の論文で採用した表明の記法を使っている。この記法は主なプログラミング言語では採用されていない。しかし、実行時にチェックされない表明としてコメントにこの記法で書いておくことはできる。例えばC/C++では次のようになる。
コメント内の表明を括弧で囲んでおくことで、他の通常のコメントと区別しやすくなる。