|
C言語のよくある間違い : Review-Cで検出するエラーの解説です。
Review-C に付属のサンプルソースをコンパイルして実際に実行して確認することができます。
エラー番号順/サンプルソース参照回数順 を選択変更可能です。
参照回数 [エラー番号]エラータイトル となっています。
67039
[e1]C言語仕様で未定義!
46001
[e2]ゴミの値を使ってはダメ
97617
[e3]配列の添字が大きすぎる!
79797
[e4]シフトのしすぎ!
71012
[e5]caseの外には制御が来ません
79421
[e6]if 文の無駄!
17995
[e7]絶対に成り立たない?
25381
[e8]常に成り立つ?
68025
[e9]ビットフィールドの設定!
67577
[e10]配列の添字が負値!
15097
[e11]-1の比較!
92772
[e12]default の書き間違い!
31878
[e13]break 文書き忘れ!
11539
[e14]条件文中に定数値有り!
24805
[e15]= と == の間違い?
87205
[e16]== で無く = の間違い?
16301
[e17]無意味な記述!
10968
[e18]負値との比較!
71060
[e19]無駄な比較!
10798
[e20]&register不可
89474
[e21]初期値が不適切!
16904
[e22]static を付けて関数宣言!
40521
[e23]char 型は遅いよ
13250
[e25]引数を未使用!
13591
[e26]未使用自動変数
58155
[e27]スタック浪費
16448
[e28]標準ヘッダを使おう
100102
[e29]ちゅうぶらりんelse
43418
[e30]せっかく作っても未使用!
61084
[e31]then節が空行です
24044
[e32]ヘッダファイルで static 宣言?
93343
[e33]制御が来ません!
17685
[e34]if 文の中がカラッポ!
62809
[e35]返却値がありません
68133
[e36]int か void か不明
18086
[e37]if(val & 2== 2)はBUG
87999
[e38]アドレスを半分削る?
26811
[e39]0bit は立ちません
30231
[e40]異常時処理は大丈夫?
62421
[e41]符号付き拡張(1)!
61858
[e42]符号付き拡張(2)!
10115
[e43]結合力は(3)?
9836
[e44]結合力は(4)?
10281
[e45]bit field問題
10575
[e46]システムマクロの値は?
11388
[e47]プロトタイプ宣言と異なる
13905
[e48]プロトタイプ宣言必要
72336
[e49]ポインタなの?整数なの?
62592
[e50]代入時、左辺と右辺の型が違う
12447
[e51]0x80000000以上正負不明式
9067
[e52]旧形式関数宣言は無駄
62046
[e53]引数の定義が異常
62283
[e54]未使用ラベル
12420
[e55]case文が不適切
63473
[e56]case -N:には絶対に来ない
63086
[e57]return(&自動変数)はBUG
9500
[e58]x|y==zの優先順位?
63799
[e59]enumの型が異なる
10495
[e60]struct/unionにメンバ名なし
69732
[e61]このファイル空ですよ!?
9790
[e63]関数定義/宣言の統一
17973
[e64]"??=%d"に注意
11485
[e65]構造体、typedef名組合せ異常
61501
[e66]引数と自動変数が同名です
66225
[e67]配列のサイズがゼロです
62042
[e68]ユニオン中の重複メンバ
8941
[e69]ブロック外のタグ定義が隠蔽
9328
[e70]明示キャストかU接尾子要演算子
61949
[e71]メンバ宣言の終わりに『;』なし
61713
[e72]アラーム文字は互換性なし
61934
[e73]『16進数値その物』互換性なし
9148
[e74]マクロ引数条件コンパイル要
9421
[e76]16進表記を検討
62825
[e77]括弧付ける『~=0』→『~={0}』
62888
[e78]未定義です
9257
[e79]引数の数が合いません
9312
[e80]関数呼出時、引数不足
65639
[e81]疑わしいエスケープ文字
66717
[e82]BUGです。if(常時真)
64033
[e83]BUGです。if(常時偽)
61477
[e84]このbitfield幅では比較は常に真です
61033
[e85]ゼロ除算
24824
[e86]初期化文字列が長すぎ
18877
[e87]#undefに不正な引数
18861
[e88]マクロの再定義
6231
[e89]SJISコメント問題
63119
[e91]#行の後にある物は無視
66303
[e93]使い道のない宣言
9969
[e94]初期値の型があわない
62396
[e95]外部とstaticの2重宣言
9260
[e96]関数の引数部で構造体を定義
9318
[e97]関数の引数部でunion を定義
13344
[e98]疑わしいタグですstruct
78323
[e100]mainはint型
11910
[e101]不適合ポインタ型の代入
62405
[e102]変更値に対するキャスト
62128
[e103]プロトタイプとの不一致
8683
[e104]タグ定義スコープ外
29630
[e105]配列の初期化要素過多
61674
[e106]列挙型タグの2重定義
65829
[e107]return?return 式?
62994
[e109]構造体/共用体メンバ未定義
9370
[e111]スカラの初期化要素過多
61594
[e113]関数外の空宣言は不要
9369
[e117]voidの演算子使用不可
18795
[e120]"/*"の中に更に"/*"
7393
[e143]記憶クラス指定子の記述場所
16029
[e148]case 森の石松:を忘れていませんか?
18937
[e149]enum を使った switch 文
64708
[e150]同名外部変数有り
11888
[e151]関数の引数の型が不適合
62523
[e152]引数で互換性なし
9093
[e153]同名内部変数有り
62589
[e154]関数の型が不明記述
12488
[e155]初期化に「{」必要
9914
[e156]初期化に「{」必要
62046
[e157]ビット演算と算術演算優先順
10224
[e158]算術演算^の周辺括弧必要
9885
[e159]算術演算|の周辺括弧必要
15366
[e160]ビットと関係演算優先順位
37319
[e161]char は遅い
62911
[e162]caseの値が過大
64796
[e163]if(a < b < c)はダメ
9486
[e164]16進表記と接尾子Uの使用
62289
[e165]プリント文途中切れ
61351
[e166]16進の文字エスケープ過大
10896
[e167]構造体初期化要素過多
62249
[e168]共用体初期化要素過多
65761
[e169]フォーマット対応引数はポインタ
63720
[e170]構造体転送の発生
62470
[e171]条件文は常に真です
9960
[e172]計算式"+"の結果が過大
10127
[e173]unsigned typeでも過大な整数
74572
[e175]意味がないコーディング
86593
[e177]シングルコート中の文字列
63058
[e178]プリント文の意味不明?
73900
[e179]charは127円まで
9480
[e180]関数定義/宣言の統一要
63722
[e182]%書き込み時注意
12701
[e183]出力なしプリント文
65054
[e187]2重定義です
65658
[e188]enum値がサイズオーバー
62160
[e189]整数返却値のポインタ化
63921
[e190]組込み関数型が競合
22415
[e192]返却値有り無しの混合
9462
[e195]期待する引数がこない
62084
[e198]組込み関数の非関数宣言
61373
[e199]組込み関数の未宣言使用
9081
[e200]型別の初期値
65159
[e201]関数呼出時に引数過多
9486
[e202]整定数をunsignedで処理
62262
[e203]構造体/共用体記述誤り
9321
[e204]最適化時、変数異常
64929
[e231]printf呼出時、引数過多
9290
[e232]組込み関数暗黙の型宣言
9115
[e233]以前の外部宣言の型と違う
61492
[e234]引数の型宣言を省略
60944
[e241]非存在構造体タグのサイズ
31613
[e242]コーヒーを丼で飲む?
29768
[e251]return後の更新は手遅れ
29219
[e252]配列の添字が大きすぎる!
29751
[e253]配列の添字が負値!
29953
[e255]何度も呼ぶな
29648
[e256]0と&演算すると0になる
9972
[e257]定数をキャストする前に型を見直すこと
30021
[e258]if(変数|定数)は常に真
29563
[e259]NULLにキャストをしない事
14149
[e260]変数宣言と同時に初期化すると楽
33103
[e261]ポインタ引数を更新しても、親関数には反映されない
32648
[e262]memset( )の第1引数が NULLポインタ
30163
[e263]memset( )の第3引数が 0
29252
[e264]エルは壱と紛らわしい
29666
[e265]roopは誤字です
29149
[e266]!演算子は否定形のときに使うと良い
29542
[e267]ビットの落としかた
29378
[e268]変数のアドレスは NULL にならない
29790
[e269]memcmpとmemcpyを間違えた
29780
[e270] !strcpy( )
29860
[e271]while(3)
6645
[e272]関数メトリクス
29937
[e273]ファイルメトリクス
5849
[e274]深すぎるネストは良くない
29874
[e275]セミコロンが多い
5457
[e276]回らないwhileループ
30227
[e277]回らないforループ
18878
[e279]変数 | 0に意味は無い
61333
[e303]関数呼出時の引数の数異常
61518
[e304]%表記異常
63246
[e305]printf呼出時引数不足
61739
[e306]printf呼出時引数過多
10658
[e307]printfの%の使い方が間違?
9236
[e308]引数の型がまちまちです
24285
[e309]短すぎる外部変数
9059
[e310]関数返却値は常時無視
8571
[e312]返却値の無い関数の返却値使用
59974
[e313]型はint
61960
[e399]マクロ関数引数の数が合いません
5406
[e400]正常時のみ考慮された変数
58546
[e402]本文が空行です
8988
[e403]構造体のメンバ変数、初期化ミス
9468
[e404]初期化されていない配列(1)
96815
[e405]初期化されていない配列(2)
59067
[e409]型違い初期化
58910
[e411]型違い演算
5418
[e412]論理結合演算子には boolean 値(1)
6151
[e413]論理結合演算子には boolean 値(2)
59320
[e415]カウンタはint型が適切
60399
[e418]型違い返却値 BYTE関数宣言
58685
[e419]読み条件
6520
[e420]書き条件
58994
[e421]論理演算子 || の右辺が(int)型です
58922
[e422]左辺が負値の可能性あり
5105
[e434]文字列に\0が入りません
59581
[e437]型違い引数
63535
[e442]memcpy 引数型違い
60810
[e445]関数 memcpy を引数 arg = NULLで呼び出し
7692
[e452]符号無しの値と定数の比較(1)
7400
[e453]符号無しの値と定数の比較(2)
58953
[e454]0の時だけ成り立ちます
7291
[e456]符号無しの値と定数の比較(3)
59529
[e458]double 型の危険な比較
60975
[e459]ループ停止の Break?
59251
[e460]解放不要?
14872
[e467]構造体メンバ変数の初期化漏れ
59025
[e471]引数にNULLポインタが渡る可能性有り
5234
[e472]領域が確保されていない引数使用
7484
[e473]型違いループ内比較
59678
[e476]8進数定数の誤記
59048
[e485]返却値にゴミを返します
58592
[e488]条件式が int 型です
58852
[e493]添字はint型が適切
7637
[e494]NULLポインタへの代入
13410
[e497]size_t の宣言違い
8784
[e501]三項演算子と enum の型
59389
[e504]無限ループ疑惑あり
6578
[e505]型違い代入
16441
[e511]構造体の二重定義
60799
[e512]共用体の二重定義
7058
[e699]コンパイルエラー相当です
11632
[e999]リンク相当チェック対象外
18792
[e4027]文字エスケープ過大
19229
[e4064]何のための宣言?
10553
[e4068]unsignedで負値を扱おうとしては駄目
18583
[e4069]入りきらない値
20367
[e4108]1bitのintビットフィールド
21273
[e4117]戻り値書き忘れ
19023
[e4128]到達しないループ
19039
[e4174]==では代入できません
5289
[e4175]配列の添字が大きすぎる!
5711
[e4185]実行されない初期化
9665
[e4186]符号無しの値と0を比較しています
18851
[e4187]if(x = 0)
18769
[e4236]if(定数)
18954
[e4237]switch(定数)
5208
[e4284]参照型でNULLを扱おうとするな
5098
[e4368]コンストラクタで初期化しないと意味が無いメンバ
8132
[e4430]一時オブジェクトの参照を返すな
17870
[e4460]引数が隠される
5152
[e4514]符号無しの値と負値を比較しています
18026
[e4533]例外ハンドラは子クラスから書く
5149
[e4611]オーバーライドのし忘れ?
17706
[e4767]ポインタが入りきらない型に入れています
21778
[e4836]ローカル変数の参照を返してもゴミが返るだけ
20063
[e4938]mainの戻り値型省略(C++)
5088
[e4940]戻り値書き忘れ(2)
19401
[e4951]mainはint宣言し、return(プログラム終了値)を記述するのが適切です
18044
[e4959]型に対して大きすぎるビットフィールド
19929
[e5000]無意味なextern
18059
[e5053]ポインタ型に大きな整数を入れています
18448
[e5057]一時オブジェクトのポインタを返すな
17678
[e5210]例外ハンドラの引数を隠している
17910
[e5221]宣言を隠す宣言
17935
[e5348]宣言を隠す宣言(2)
17968
[e5672]同じ定数値を比較している
5136
[e5673]if(val & 2 == 2)はBUG
5179
[e5674]結合力は(4)?
5058
[e5691]caseの値は入りきりません(ビットフィールド)
5179
[e5762]ポインタ型の引数に代入しても無意味
17793
[e5763]sizeof(x[N])は1要素分のサイズ
5580
[e5764]境界チェックは先に
20266
[e5765]NULLチェックは先に
18761
[e5766]自分自身に代入しても無意味
18757
[e5772]未使用ハンドラ引数
22247
[e5773]1バイトmemcpy
19029
[e5774]符号拡張
102667
[e5776]char*文字列を==で比較しては駄目
19228
[e5777]おかしいNULLチェック
5590
[e5779]毎回初期化される大きな配列
21453
[e5780]sizeof(定数)
6000
[e5782]memcpyの第三引数にsizeof(配列でも構造体でも無いただの整数型)
19037
[e5783]sizeof('A')はいくつ?
5459
[e5784]ビットフィールド範囲外の値との==,!=比較
5125
[e5785]セキュリティ上の問題があるファイル名生成関数の使用
30111
[e5786]sizeof(構造体ポインタ型)は変
18927
[e5787]上に跳ぶgoto
6394
[e5788]ポインタ引数のポインタを進めるか中身を増やすか
5222
[e5789]x == 1 && x == 2はあり得ない
5182
[e5790]代入先より大きいビット数左ビットシフトしている
19121
[e5791]sizeof(プリミティブポインタ型)は変
|