Lint
上記の例の場合、foo() は、sum が100以上であれば値を返すが、それ以外の時には値を返さない。これはC言語の構文的には合法だが、実行時エラーなどの未定義動作を引き起こす。そのため、lint では警告が出る。
ただ、最近のコンパイラは、細かな警告やエラーを出す機能が強化されているため、以前は lint を使わなければ検出できなかった類のミスも、コンパイル段階で検出できるようになっているものがある。上記の例は、Microsoft Visual C++では既定で C4715 の警告が生成され、コンパイルオプション/we"4715"を指定することでコンパイルエラーになる。GCCやClangではコンパイルオプション-Wreturn-typeを指定することで警告が生成され、また-Werror=return-typeを指定することでコンパイルエラーになる。
後発のプログラミング言語では安全性を考慮して、上記のようなコードを常に非合法とし、必ずコンパイルエラーにしてしまう仕様となっているもののほうが多い。C言語およびC++では、仕様により動作が厳密に規定されていない事項(未規定動作、処理系定義動作、未定義動作)が非常に多く、そのためコンパイラやlintによる警告に頼らなければならないことが多い。