- ベストアンサー
コンパイルエラーについて
- cygwinでコンパイルする際に、undefined referenceのエラーが出ています。
- y=xとy=x*x/8のグラフをテキストで描くプログラムのコンパイルエラーです。
- エラーメッセージにはundefined referenceの関数があります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
関数 f() および g() が main関数の内部に記載されてしまっているようです。 f() と g() をmain関数の外側に記述するよう変更してみてください。 一応記載すると以下のような形で。 -------------------- #include <stdio.h> #define XSIZE 20 #define YSIZE 20 char graph[XSIZE][YSIZE]; /* 座標(x, y)に文字cをプロットする */ void f(int x, int y, char c); /* 作成したグラフを表示する */ void g(void); int main(void){ int x, y; for (x=0;x<XSIZE;x++){ y = x; f(x, y, '+'); } for (x=0 ; x < XSIZE ; x++){ y=x*x/8 ; f(x, y, '*'); if(y>=YSIZE) break; g(); return 0; } return 0; } void f(int x, int y, char c) { graph[x][y] = c; } void g(void) { int a, b; for (b=YSIZE ; b>0 ; b--){ for (a = 0 ; a < XSIZE ; a++){ if (graph[a][b]==0) printf(" "); else printf("%c ", graph[a][b]); } printf("\n"); } }
その他の回答 (2)
- asuncion
- ベストアンサー率33% (2127/6289)
別のエラー: g関数において for (b=YSIZE ; b>0 ; b--){ for (a = 0 ; a < XSIZE ; a++){ if (graph[a][b]==0) bがYSIZEのとき、graph[][]の定義範囲外の領域を参照しています。 graph[20][20]という定義において、正しく参照できるのは graph[0][0]~graph[19][19]です。 同じくg関数において、 return 0; は不要です。戻り値の型がvoidだからです。
お礼
ご指摘ありがとうございます。修正しておきます。
- asuncion
- ベストアンサー率33% (2127/6289)
main関数において、 { と } の数とが食い違っています。
お礼
回答ありがとうございます。無事解決しました。 回答が一番早かったのでベストアンサーにさせていただきました。