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
を参照して下さい。