削除された内容 追加された内容
編集の要約なし
編集の要約なし
12行目:
== lintで警告が出る例 ==
<source lang="c">
int foo(voidint count) {
int sum = 0;
int i;
...
if for (sumi >= 1001; i <= count; ++i) {
return sum += i;
}
if (sum >= 100) {
return sum;
}
}
</source>
上記の例の場合、<code>foo()</code> は、<code>sum</code> が100以上であれば値を返すが、それ以外の時には値を返さない。これはC言語の構文的には合法だが、実行時エラーなどの未定義動作を引き起こす。そのため、lint では警告が出る。
 
ただ、{{いつ範囲|date=2019-08|最近}}のコンパイラは、細かな警告やエラーを出す機能が強化されているため、以前は lint を使わなければ検出できなかった類のミスも、コンパイル段階で検出できるようになっているものがある。上記の例は、[[Microsoft Visual C++]]では既定で C4715 の警告が生成され、コンパイルオプション<code>/we"4715"</code>を指定することでコンパイルエラーになり、る。[[GNUコンパイラコレクション|GCC]]や[[Clang]]ではコンパイルオプション<code>-Wreturn-type</code>を指定することで警告になり、また<code>-Werror=return-type</code>を指定することでコンパイルエラーになる。
 
後発のプログラミング言語では安全性を考慮して、上記のようなコードを常に非合法とし、必ずコンパイルエラーにしてしまう仕様となっているもののほうが多い。C言語では仕様により動作が厳密に規定されていない事項が非常に多く、そのためコンパイラやlintによる警告に頼らなければならないことが多い。
 
== 「lint」の派生用法 ==
34 ⟶ 38行目:
*[[Portable C Compiler]]
*[[Another HTML-lint]]
*[[静的コード解析]]
 
== 外部リンク ==