[205] Re:C言語ポインタ完全制覇についての質問
投稿者:九龍
2007/02/20 02:13:25
>それをやっちゃうと、swap(float *a, float *b)のような関数で困りますし。
なるほど。仰られる通りです。
>もともと、プロトタイプ宣言なんて書かなくても(警告は出ても)動きますから、
>結合はされるとしても、プロトタイプ宣言の有効範囲は微妙な問題のように
>思います。
>
>以下のソースをbcc32でコンパイルしたところ、
>
>void hoge1(void)
>{
> extern void piyo(int a);
>
> piyo(1);
>}
>
>void hoge2(void)
>{
> piyo(2);
>}
>
>こんなエラーが出ました。
>エラー E2356 proto2.c 10: 'piyo' の再宣言で型が一致していない(関数 hoge2 )
>エラー E2344 proto2.c 3: 一つ前の 'piyo' の定義位置(関数 hoge2 )
>
>hoge2のブロックの先頭に「extern void piyo(int a);」を入れると
>ちゃんと通るので、少なくともbcc32においては、hoge1()内部の宣言がそのまま
>hoge2()内部で有効になっているというわけではないようです。
>
>この件について規格書になにか書いてないかとぱらぱらめくったのですが
>見つけられませんでした。
わざわざ規格書まで調べて頂き有り難うございます。
と、ゆうことは処理系依存って事なんでしょうね…。