e180.c

関数定義/宣言の統一要
#ident	"$Id: e180.c.html 187 2006-05-17 05:23:14Z ono.mki $"
/*###23 [cc] 警告: BBC:e180(1): 関数定義/宣言の両方をK&RかANSIに統一要%%%*/
/*###10 [cc] 警告: BBC:e180(2): プロトタイプ関数宣言はここ%%%*/

#include <stdio.h>
#include <stdlib.h>

static  int     e180(unsigned int) ;
static  int     KandR() ;
static  int     Ansi(unsigned char) ;

int     main()
{
        printf("%x¥n",e180(0xFF)) ;
        printf("%x¥n",KandR(0xFF)) ;  /*修正例1 K&R*/ 
        printf("%x¥n",Ansi(0xFF)) ;  /*修正例2 ANSI*/	
        return(0) ;	
}
static  int     e180(val)
unsigned char   val  ;
{
        return(val) ;
}
static  int     KandR(val)
unsigned char   val  ;
{
        return(val) ;
}
static  int     Ansi(unsigned char   val)
{
        return(val) ;
}

解説: 関数e180()のプロトタイプ宣言で警告を出します。 これは、int 長に満たない引数に対して、 ANSIプロトタイプ宣言と K&Rプロトタイプ定義を混在させた場合に発生する警告です。 両方のコンパイラでエラーを出さないための修正は、 以下の2つです。 両方K&Rにする->修正例1 KandR() ; 両方ANSIにする->修正例2 Ansi() ; Sec. 9.4 pp. 272-3. C-FAQ 11.3J C-FAQ 11.3E を参照して下さい。