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のモジュール間チェック対象外となってしまいます。
※コンパイルに失敗したら、リンクが出来ないに相当します。