2.C言語のよくある間違い


C言語のよくある間違い : Review-Cで検出するエラーの解説です。
Review-C に付属のサンプルソースをコンパイルして実際に実行して確認することができます。



エラー番号順サンプルソース参照回数順  を選択変更可能です。

参照回数[エラー番号]エラータイトル  となっています。
65340 [e1]C言語仕様で未定義!
44047 [e2]ゴミの値を使ってはダメ
95999 [e3]配列の添字が大きすぎる!
78642 [e4]シフトのしすぎ!
70148 [e5]caseの外には制御が来ません
78409 [e6]if 文の無駄!
17235 [e7]絶対に成り立たない?
24814 [e8]常に成り立つ?
67221 [e9]ビットフィールドの設定!
66825 [e10]配列の添字が負値!
14609 [e11]-1の比較!
91721 [e12]default の書き間違い!
30255 [e13]break 文書き忘れ!
11045 [e14]条件文中に定数値有り!
24270 [e15]= と == の間違い?
86291 [e16]== で無く = の間違い?
15759 [e17]無意味な記述!
10528 [e18]負値との比較!
70406 [e19]無駄な比較!
10295 [e20]&register不可
88617 [e21]初期値が不適切!
16197 [e22]static を付けて関数宣言!
37915 [e23]char 型は遅いよ
12794 [e25]引数を未使用!
13114 [e26]未使用自動変数
57618 [e27]スタック浪費
15981 [e28]標準ヘッダを使おう
98974 [e29]ちゅうぶらりんelse
34272 [e30]せっかく作っても未使用!
60612 [e31]then節が空行です
19375 [e32]ヘッダファイルで static 宣言?
92417 [e33]制御が来ません!
16819 [e34]if 文の中がカラッポ!
62421 [e35]返却値がありません
67465 [e36]int か void か不明
17601 [e37]if(val & 2== 2)はBUG
87257 [e38]アドレスを半分削る?
26203 [e39]0bit は立ちません
29769 [e40]異常時処理は大丈夫?
62017 [e41]符号付き拡張(1)!
61482 [e42]符号付き拡張(2)!
9262 [e43]結合力は(3)?
9445 [e44]結合力は(4)?
9687 [e45]bit field問題
10180 [e46]システムマクロの値は?
10832 [e47]プロトタイプ宣言と異なる
13200 [e48]プロトタイプ宣言必要
71484 [e49]ポインタなの?整数なの?
62122 [e50]代入時、左辺と右辺の型が違う
11937 [e51]0x80000000以上正負不明式
8651 [e52]旧形式関数宣言は無駄
61604 [e53]引数の定義が異常
61928 [e54]未使用ラベル
12079 [e55]case文が不適切
62913 [e56]case -N:には絶対に来ない
62457 [e57]return(&自動変数)はBUG
9067 [e58]x|y==zの優先順位?
63029 [e59]enumの型が異なる
9979 [e60]struct/unionにメンバ名なし
68704 [e61]このファイル空ですよ!?
9401 [e63]関数定義/宣言の統一
16696 [e64]"??=%d"に注意
10923 [e65]構造体、typedef名組合せ異常
61163 [e66]引数と自動変数が同名です
65532 [e67]配列のサイズがゼロです
61633 [e68]ユニオン中の重複メンバ
8587 [e69]ブロック外のタグ定義が隠蔽
8965 [e70]明示キャストかU接尾子要演算子
61549 [e71]メンバ宣言の終わりに『;』なし
61394 [e72]アラーム文字は互換性なし
61564 [e73]『16進数値その物』互換性なし
8796 [e74]マクロ引数条件コンパイル要
9052 [e76]16進表記を検討
62376 [e77]括弧付ける『~=0』→『~={0}』
62395 [e78]未定義です
8878 [e79]引数の数が合いません
8777 [e80]関数呼出時、引数不足
65061 [e81]疑わしいエスケープ文字
66104 [e82]BUGです。if(常時真)
63470 [e83]BUGです。if(常時偽)
61172 [e84]このbitfield幅では比較は常に真です
60614 [e85]ゼロ除算
21677 [e86]初期化文字列が長すぎ
18575 [e87]#undefに不正な引数
11572 [e88]マクロの再定義
5564 [e89]SJISコメント問題
62720 [e91]#行の後にある物は無視
65689 [e93]使い道のない宣言
9328 [e94]初期値の型があわない
61952 [e95]外部とstaticの2重宣言
8844 [e96]関数の引数部で構造体を定義
8978 [e97]関数の引数部でunion を定義
10959 [e98]疑わしいタグですstruct
77262 [e100]mainはint型
11434 [e101]不適合ポインタ型の代入
61853 [e102]変更値に対するキャスト
61686 [e103]プロトタイプとの不一致
8346 [e104]タグ定義スコープ外
25461 [e105]配列の初期化要素過多
61321 [e106]列挙型タグの2重定義
65227 [e107]return?return 式?
62332 [e109]構造体/共用体メンバ未定義
9004 [e111]スカラの初期化要素過多
61258 [e113]関数外の空宣言は不要
8977 [e117]voidの演算子使用不可
18380 [e120]"/*"の中に更に"/*"
7033 [e143]記憶クラス指定子の記述場所
15631 [e148]case 森の石松:を忘れていませんか?
8528 [e149]enum を使った switch 文
64229 [e150]同名外部変数有り
11510 [e151]関数の引数の型が不適合
61923 [e152]引数で互換性なし
8799 [e153]同名内部変数有り
61639 [e154]関数の型が不明記述
12008 [e155]初期化に「{」必要
9557 [e156]初期化に「{」必要
61610 [e157]ビット演算と算術演算優先順
9786 [e158]算術演算^の周辺括弧必要
9099 [e159]算術演算|の周辺括弧必要
14101 [e160]ビットと関係演算優先順位
36685 [e161]char は遅い
62446 [e162]caseの値が過大
64257 [e163]if(a < b < c)はダメ
9186 [e164]16進表記と接尾子Uの使用
61918 [e165]プリント文途中切れ
60993 [e166]16進の文字エスケープ過大
9884 [e167]構造体初期化要素過多
61792 [e168]共用体初期化要素過多
65250 [e169]フォーマット対応引数はポインタ
63161 [e170]構造体転送の発生
61919 [e171]条件文は常に真です
9211 [e172]計算式"+"の結果が過大
8982 [e173]unsigned typeでも過大な整数
73882 [e175]意味がないコーディング
85978 [e177]シングルコート中の文字列
62626 [e178]プリント文の意味不明?
73237 [e179]charは127円まで
8937 [e180]関数定義/宣言の統一要
63224 [e182]%書き込み時注意
11063 [e183]出力なしプリント文
64518 [e187]2重定義です
64945 [e188]enum値がサイズオーバー
61517 [e189]整数返却値のポインタ化
63416 [e190]組込み関数型が競合
21637 [e192]返却値有り無しの混合
9077 [e195]期待する引数がこない
61461 [e198]組込み関数の非関数宣言
60946 [e199]組込み関数の未宣言使用
8779 [e200]型別の初期値
64633 [e201]関数呼出時に引数過多
8986 [e202]整定数をunsignedで処理
61835 [e203]構造体/共用体記述誤り
8975 [e204]最適化時、変数異常
64264 [e231]printf呼出時、引数過多
8923 [e232]組込み関数暗黙の型宣言
8687 [e233]以前の外部宣言の型と違う
61090 [e234]引数の型宣言を省略
60601 [e241]非存在構造体タグのサイズ
30660 [e242]コーヒーを丼で飲む?
29312 [e251]return後の更新は手遅れ
28864 [e252]配列の添字が大きすぎる!
29256 [e253]配列の添字が負値!
29446 [e255]何度も呼ぶな
29205 [e256]0と&演算すると0になる
7437 [e257]定数をキャストする前に型を見直すこと
29148 [e258]if(変数|定数)は常に真
29084 [e259]NULLにキャストをしない事
5096 [e260]変数宣言と同時に初期化すると楽
30725 [e261]ポインタ引数を更新しても、親関数には反映されない
31078 [e262]memset( )の第1引数が NULLポインタ
29774 [e263]memset( )の第3引数が 0
28906 [e264]エルは壱と紛らわしい
29170 [e265]roopは誤字です
28684 [e266]!演算子は否定形のときに使うと良い
29206 [e267]ビットの落としかた
29009 [e268]変数のアドレスは NULL にならない
29374 [e269]memcmpとmemcpyを間違えた
29404 [e270] !strcpy( )
29242 [e271]while(3)
5762 [e272]関数メトリクス
29607 [e273]ファイルメトリクス
5260 [e274]深すぎるネストは良くない
29437 [e275]セミコロンが多い
4972 [e276]回らないwhileループ
29600 [e277]回らないforループ
18582 [e279]変数 | 0に意味は無い
60841 [e303]関数呼出時の引数の数異常
61123 [e304]%表記異常
62712 [e305]printf呼出時引数不足
61239 [e306]printf呼出時引数過多
10142 [e307]printfの%の使い方が間違?
8804 [e308]引数の型がまちまちです
23820 [e309]短すぎる外部変数
8506 [e310]関数返却値は常時無視
8217 [e312]返却値の無い関数の返却値使用
59591 [e313]型はint
61617 [e399]マクロ関数引数の数が合いません
4998 [e400]正常時のみ考慮された変数
58134 [e402]本文が空行です
7124 [e403]構造体のメンバ変数、初期化ミス
7792 [e404]初期化されていない配列(1)
68083 [e405]初期化されていない配列(2)
58685 [e409]型違い初期化
58550 [e411]型違い演算
4998 [e412]論理結合演算子には boolean 値(1)
5210 [e413]論理結合演算子には boolean 値(2)
58704 [e415]カウンタはint型が適切
60087 [e418]型違い返却値 BYTE関数宣言
58294 [e419]読み条件
6192 [e420]書き条件
58564 [e421]論理演算子 || の右辺が(int)型です
58579 [e422]左辺が負値の可能性あり
4716 [e434]文字列に\0が入りません
59060 [e437]型違い引数
62654 [e442]memcpy 引数型違い
59860 [e445]関数 memcpy を引数 arg = NULLで呼び出し
7319 [e452]符号無しの値と定数の比較(1)
7092 [e453]符号無しの値と定数の比較(2)
58624 [e454]0の時だけ成り立ちます
6947 [e456]符号無しの値と定数の比較(3)
59036 [e458]double 型の危険な比較
60538 [e459]ループ停止の Break?
58896 [e460]解放不要?
10519 [e467]構造体メンバ変数の初期化漏れ
58566 [e471]引数にNULLポインタが渡る可能性有り
4785 [e472]領域が確保されていない引数使用
7075 [e473]型違いループ内比較
59321 [e476]8進数定数の誤記
58482 [e485]返却値にゴミを返します
58194 [e488]条件式が int 型です
58483 [e493]添字はint型が適切
7235 [e494]NULLポインタへの代入
10529 [e497]size_t の宣言違い
8071 [e501]三項演算子と enum の型
58984 [e504]無限ループ疑惑あり
6263 [e505]型違い代入
11919 [e511]構造体の二重定義
60357 [e512]共用体の二重定義
6624 [e699]コンパイルエラー相当です
11281 [e999]リンク相当チェック対象外
18401 [e4027]文字エスケープ過大
18840 [e4064]何のための宣言?
6434 [e4068]unsignedで負値を扱おうとしては駄目
18217 [e4069]入りきらない値
19704 [e4108]1bitのintビットフィールド
19738 [e4117]戻り値書き忘れ
18546 [e4128]到達しないループ
18632 [e4174]==では代入できません
4816 [e4175]配列の添字が大きすぎる!
5247 [e4185]実行されない初期化
6704 [e4186]符号無しの値と0を比較しています
18338 [e4187]if(x = 0)
18348 [e4236]if(定数)
18557 [e4237]switch(定数)
4756 [e4284]参照型でNULLを扱おうとするな
4672 [e4368]コンストラクタで初期化しないと意味が無いメンバ
6106 [e4430]一時オブジェクトの参照を返すな
17475 [e4460]引数が隠される
4718 [e4514]符号無しの値と負値を比較しています
16980 [e4533]例外ハンドラは子クラスから書く
4727 [e4611]オーバーライドのし忘れ?
17358 [e4767]ポインタが入りきらない型に入れています
18155 [e4836]ローカル変数の参照を返してもゴミが返るだけ
18784 [e4938]mainの戻り値型省略(C++)
4655 [e4940]戻り値書き忘れ(2)
18495 [e4951]mainはint宣言し、return(プログラム終了値)を記述するのが適切です
17651 [e4959]型に対して大きすぎるビットフィールド
19344 [e5000]無意味なextern
17720 [e5053]ポインタ型に大きな整数を入れています
18021 [e5057]一時オブジェクトのポインタを返すな
17304 [e5210]例外ハンドラの引数を隠している
17450 [e5221]宣言を隠す宣言
17456 [e5348]宣言を隠す宣言(2)
17662 [e5672]同じ定数値を比較している
4717 [e5673]if(val & 2 == 2)はBUG
4772 [e5674]結合力は(4)?
4673 [e5691]caseの値は入りきりません(ビットフィールド)
4777 [e5762]ポインタ型の引数に代入しても無意味
17482 [e5763]sizeof(x[N])は1要素分のサイズ
5032 [e5764]境界チェックは先に
19441 [e5765]NULLチェックは先に
18369 [e5766]自分自身に代入しても無意味
18402 [e5772]未使用ハンドラ引数
20566 [e5773]1バイトmemcpy
18594 [e5774]符号拡張
90575 [e5776]char*文字列を==で比較しては駄目
18775 [e5777]おかしいNULLチェック
5112 [e5779]毎回初期化される大きな配列
20420 [e5780]sizeof(定数)
5418 [e5782]memcpyの第三引数にsizeof(配列でも構造体でも無いただの整数型)
18422 [e5783]sizeof('A')はいくつ?
4817 [e5784]ビットフィールド範囲外の値との==,!=比較
4695 [e5785]セキュリティ上の問題があるファイル名生成関数の使用
20260 [e5786]sizeof(構造体ポインタ型)は変
18479 [e5787]上に跳ぶgoto
5420 [e5788]ポインタ引数のポインタを進めるか中身を増やすか
4720 [e5789]x == 1 && x == 2はあり得ない
4699 [e5790]代入先より大きいビット数左ビットシフトしている
18535 [e5791]sizeof(プリミティブポインタ型)は変



Review-Cのホームページへ