C標準とC++標準はどちらも、「未定義動作」という用語を使用して、異なる実装が異なる、互換性のない方法で構成を処理するのに役立つ可能性がある状況を指します。その一部は予測どおりに動作しますが、そうでない場合もあります。どちらもUBを説明するために同じ用語を使用しており、公開されているC ++標準の理論的根拠はわかりませんが、C標準の理論的根拠は次のように述べています。
未定義の動作は、診断が難しい特定のプログラムエラーをキャッチしないように実装者にライセンスを与えます。また、準拠する可能性のある言語拡張の領域を識別します。実装者は、公式に定義されていない動作の定義を提供することにより、言語を拡張できます。」
C標準によって未定義動作として分類された多くのアクションは、すべてではないにしても多くの実装で完全に定義されていると見なされましたが、標準の作成者は、異常なプラットフォームまたはアプリケーションフィールドを対象とする実装者に、通常の動作から逸脱する機能を提供したいと考えていました。そうすることは彼らの顧客に利益をもたらすでしょう。このような自由は、プログラマーが必要なことを迅速かつ簡単に行うことを困難にする、前例からの恣意的で気まぐれな逸脱を招くことを意図したものではありません。
残念ながら、gccとclangを使用する多くのプログラマーは、それらのコンパイラーのニーズと同様に、それらのコンパイラーのメンテナーを理解していません。または、悪意のあるプログラムでさえ何も損傷しないコンテキストでのみ実行されます。つまり、プログラマーが他のコンテキストでの使用に適したプログラムを簡単かつ効率的に作成できるようにするための実装は必要ありません。