[213] Re:C言語ポインタ完全制覇についての質問
投稿者:九龍
2007/02/20 02:13:25
>bcc32ですが、
>
> extern void piyo(int a);
>
>と書いていたのを、
>
> extern int piyo(int a);
一応、VC++ 6.0(SP6)でテストしてみました。
--a.c--
void hoge1 (void);
void hoge1(void)
{
extern int piyo(int a);
piyo(1);
}
void hoge2(void)
{
piyo(2);
}
--b.c--
int piyo (int a)
{
return a;
}
c:\cppsrc\a\a.c(11) : warning C4013: 関数 'piyo' は定義されていません。int 型の値を返す外部関数と見なします。
となりました。
しかし、
>a)hoge1()の中のpiyoの宣言はhoge1()の中で完結していて、
なのに、既存の宣言(hoge1の関数ブロック内の宣言)との整合性がチェックされているとは…。
>あまり関係ありませんが、コンパイラの警告メッセージの翻訳チームは規格書を理解して
>細心の注意を払って訳しているのか、かなり疑問。
>宣言と定義は用語の意味が違うのですが、どう見ても混同していると思われます。
同感です。
私もコンパイラの警告メッセージで理解に苦しむ時があります。