GAIO CLUB
				char ***cp;				/* ルール違反 */
  struct T_ST1 {
    char  st1_c;
  };
  struct T_ST2 {
    int  st2_i;
    struct T_ST1 *st2_st1p;
  };
  struct T_ST3 {
    int  st3_i;
    struct T_ST2 *st3_st2p;
  };
  struct T_ST3  *st3p;			/* ルール違反? */
  
  void test()
  {
    st3p->st3_st2p->st2_st1p->st1_c = ***cp;
  }
char	C;
short	*SP = (short *)&C;	/* SP が奇数になる可能性あり */
unsigned short	US;
short	*SP = (short *)&US;	/* shortサイズどうしなので問題なし(符号違い) */
const int	CI = 10;
int		*IP = &CI;		/* ルール違反 : const を取り除いている */
const int	*CIP = &CI;		/* const int を指すポインタ */
const int	CI1 = 1;
int const	CI2 = 2;				/* const int と同じ意味 */
volatile int	VI;
volatile int	*const VICP = &VI;			/* volatile int を指すconstポインタ */
volatile int	* const * volatile VICPVP = &VICP;	/* volatile int を指すconstポインタ を指すvolatileポインタ */
									int	I,*IP;
  short	*SP1,*SP2;
  
    IP += 1;
    IP -= 1;
    IP *= 1;		/* エラー : 乗算は使えない */
    IP /= 1;		/* エラー : 除算は使えない */
    IP += 0.5;		/* エラー : 浮動小数は使えない */
    I = SP1+SP2;	/* エラー : ポインタどうしの加算は使えない */
    I = SP2-SP1;
    I = SP2-IP;		/* エラー : ポインタの指す型が異なっている */
    int		I1,I2;
    short	S1,S2;
    short	*SP1=&S1, *SP2=&S2;
    long	LA[10];
    long	*LP1=&(LA[0]), *LP2=&(LA[3]), *LP3=&(LA[4]), *LP4=&(LA[8]);
    
                ++LP1;
                LP2 -= 3;
                I1 = LP4 - LP3;
                I2 = SP1 - SP2;			/* ルール違反:配列を指していないポインタの算術演算 */
									浅野 昌尚(あさの まさなお)
ガイオ・テクノロジー株式会社
開発1部 QTXグループ
1980年代から30年以上にわたり汎用構造のCコンパイラ開発に従事し、その間に8ビットマイコンからRISC・VLIW・画像処理プロセッサまで、さまざまなCPU向けのクロスCコンパイラを開発。