warning: label ‘defalt’ defined but not used
警告:ラベル ‘defalt’ は定義されているが使用されていない
[-Wunused-label]
■1.default:の誤字はエラーにならない
#include <stdio.h>
int f1(int id)
{
switch(id) {
case 1: return 1;
case 2: return 2;
case 3: return 3;
//ダメ default: の誤字はコンパイルエラーにならない
defalt: return 4;
}
}
int main(void)
{
printf("%d\n",f1(4));
}
defaultの誤字はただの未使用ラベルです。
コンパイラは誤字を指摘しません。
コンパイルエラーにならないので間違いに気が付きません。
この例では return 4 を通過しないのでゴミが返却されます。
■2.未使用ラベルはエラーにならない
int f2(int id)
{
switch(id) {
case 1: return 1;
case 2: return 2;
case 3: return 3;
//defaultの誤字は未使用ラベルになる
unuseLabel: return 4;
}
return 0;
}
■3.字下げの幅が狭すぎてくっ付く
int f3(int id)
{ //ダメ:コンパイルエラーにならない
switch(id) {
case1: return 1;
case2: return 2;
case3: return 3;
case4: return 4;
}
return 0;
}
case 1:を
case1:とクッツケると未使用ラベルになりますがコンパイルエラーになりません。
■4.C言語でよくある誤字 roop
[“roop” C言語]で検索
⇒loopが正解です。
出荷製品にこの誤字がある場合、
適切なソースコードレビューを
入社以来一度も受けた事が無いプログラマが
コーディングした可能性があります。
[“DEBAG” C言語]で検索
⇒DEBUGが正解。
DEBAGは「(いたずら、罰で)ズボンを脱がす」 の意味だそうだ
[”メモリ開放”]で検索
⇒メモリ解放が正解です。
プログラムの仕様書、設計書、コード中のコメントでよく間違えています。