C言語なら俺に聞け 156at TECH
C言語なら俺に聞け 156 - 暇つぶし2ch182:デフォルトの名無しさん
20/10/21 16:41:05.37 gYHxZT9P0.net
>>155
エラーメッセージからするとmain()関数内部でfact()関数の宣言を
書いていることが原因らしい。
素朴なCだと、そう書くとまだ名前が宣言されて無いグローバル関数を
main()関数内部で使えるようにする意味になるが、現在のC/C++だと
それぞれのコンパイラが独自に拡張したりした結果、
「(関数内部における)内部関数」なるものが使えるコンパイラが出てきたため、
意味が違ってしまっていることがある。
今の例の場合、main関数の中で後から定義するfactという名前の関数を先に
宣言する意味だとコンパイラは認識してしまっている可能性が高い。
だから、main関数の中にfact関数の関数定義が書かれて無いのでそのような
エラーが出る。
もし、素朴なCのプロトタイプ宣言にしたい場合、
main()関数の外側に書くのが普通だが、なんらかの事情でmain()関数の内側に
書きたい場合には、
int main(void){
 extern int fact(int n);
 ・・・
}
のようにexternキーワードを書くと通ることがあるかも知れない。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch