e699.c

コンパイルエラー相当です


/* 標準Cで禁止その7*/ /* enum は構造体の外に出して下さい。 */ /* 修正前 */ typedef struct tag { enum { A,B,C } ; int a ; } tag_t ; /* 修正例 */ enum { A,B,C } ; typedef struct tag { int a ; } tag_t ;
/* 標準Cで禁止その6*/ /* 誤り */ free(&(void *)p); /* 修正例 */ free( (void *)&p);
/* 標準Cで禁止その5*/ /* 『;』を空の宣言とみなしません。 */ ; int main() { int a = 0 ;
/* 標準Cで禁止その4*/ /* 演算子に余分の空白があります。+= とみなしません。*/ a + = 10 ;
/* 標準Cで禁止その3*/ /* 意味不明のsizeof */ printf("%d¥n", sizeof (char)a ) ; e999() ; exit(0) ; return(a) ; }
/* 標準Cで禁止その2*/ /* 初期化の解釈が異なります。 */ struct { struct { unsigned char a ; struct { unsigned b ; } E3[4] ; } E2[8] ; } E1[5] = { /*00*/{ 1, 2, 3, 4, 5}, /*01*/{ 11, 12, 13, 14, 15}, /*02*/{ 21, 22, 23, 24, 25}, /*03*/{ 31, 32, 33, 34, 35}, /*04*/{ 41, 42, 43, 44, 45} /*05*/,{ 51, 52, 53, 54, 55} /* 'E1' に対する初期値が多すぎます。 */ };
/* 標準Cで禁止その1*/ /* 後ろでstatic */ static int e999() {return(0) ; }
解説: 上記コーディングは K&Rコンパイラでは正常にコンパイル出来ます。 Review-Cシステムは標準Cベースでチェックしているため このサンプルの様にエラーになる物があります。 このエラーが発生したモジュールは コンパイルエラー相当であるため lint.Review-Cのモジュール間チェック対象外となってしまいます。 ※コンパイルに失敗したら、リンクが出来ないに相当します。