質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

Q&A

解決済

1回答

1982閲覧

C言語のコンパイルが上手くいきません

seikin_tv_love

総合スコア3

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

0グッド

1クリップ

投稿2020/12/31 06:30

編集2020/12/31 06:42

c

1#include <stdio.h> 2#include <stdlib.h> 3#include <string.h> 4#include <math.h> 5 6 7/*---------------------------*/ 8/* Conventional Routines */ 9/*---------------------------*/ 10 11#define MxGEN 9 12#define RAD (180./3.14159265359) 13#define MxMOD 19 14#define MxELM ((MxMOD+1)*(MxMOD+1)-1) 15#define MxCOL 50 16#define LLINE (MxCOL*9 + 10) 17 18void gigrf(int gen, double year) 19{ int maxod, i, n, m, l, k, ncol, nlin; 20 double y1, y2, yr1, yr2, dy; 21 double tzero, dmy[3], cb[MxELM], cv[MxELM]; 22 char path[]="/home/SHARE/data/IGRFCOEF/igrf00.coef"; 23 char file[]="/home/SHARE/data/IGRFCOEF/igrf00.coef"; 24 char *pstr, *line, buf[LLINE]; 25 FILE *fp; 26 if ((gen<1) || (MxGEN<gen)) 27 { fprintf(stderr, "gigrf: unknown NGEN = %d\n", gen); exit(1); } 28 strcpy(file, path); 29 if ((pstr=strstr(file,"00")) == NULL) 30 { fprintf(stderr, "gigrf: filename invalid\n"); exit(1); } 31 sprintf(buf, "%02d", gen); strncpy(pstr, buf, 2); 32 if ((fp=fopen(file,"r")) == NULL) 33 { fprintf(stderr, "gigrf: file not found\n"); exit(1); } 34 if (fgets(buf,LLINE,fp) == NULL) 35 { fprintf(stderr, "gigrf: file empty\n"); exit(1); } 36 if (sscanf(buf,"%d%d%lf%lf",&maxod,&ncol,&y1,&y2) != 4) 37 { fprintf(stderr, "gigrf: Line-1 format error\n"); exit(1); } 38 if ((maxod<8) || (maxod>MxMOD) || (ncol<2) || (ncol>MxCOL)) 39 { fprintf(stderr, "gigrf: Line-1 invalid\n"); exit(1); } 40 nlin = (maxod+1)*(maxod+1) - 1; 41 if ((year<y1) || (year>y2)) 42 fprintf(stderr, "gigrf: IGRF-%02d not defined for %9.3lf\n", gen,year); 43 if (fgets(buf,LLINE,fp) == NULL) 44 { fprintf(stderr, "gigrf: EOF before Line-2\n"); exit(1); } 45 line = &buf[1]; 46 if (sscanf(line,"%*c%*d%*d%lf%n",&yr2,&n) == EOF) 47 { fprintf(stderr, "gigrf: Line-2 invalid\n"); exit(1); } 48 for (l=2; l<ncol; l++) { 49 line += n; yr1 = yr2; 50 if (sscanf(line,"%lf%n",&yr2,&n) == EOF) 51 { fprintf(stderr, "gigrf: Line-2 short\n"); exit(1); } 52 if (year < yr2) break; 53 } 54 for (i=0; i<nlin; i++) { 55 if (fgets(buf,LLINE,fp) == NULL) 56 { fprintf(stderr, "gigrf: EOF before Line-%d\n", i+3); exit(1); } 57 line = &buf[0]; 58 if (sscanf(line,"%*c%*d%*d%n",&n) == EOF) 59 { fprintf(stderr, "gigrf: Line-%d invalid\n", i+3); exit(1); } 60 for (m=2; m<l; m++) { 61 line += n; 62 if (sscanf(line,"%*lf%n",&n) == EOF) 63 { fprintf(stderr, "gigrf: Line-%d short\n", i+3); exit(1); } 64 } 65 line += n; 66 if (sscanf(line,"%lf%lf",&cb[i],&cv[i]) != 2) 67 { fprintf(stderr, "gigrf: Line-%d short\n", i+3); exit(1); } 68 } 69 if (l == ncol) tzero = yr2; 70 else { 71 tzero = yr1; yr2 -= yr1; 72 for (i=0; i<nlin; i++) cv[i] = (cv[i]-cb[i])/yr2; 73 } 74 k = 0; 75 for (i=0,n=1; n<=maxod; n++) { 76 vgh[0][n]=cb[i]; vght[0][n]=cv[i]; i++; 77 if ((cb[i]!=0.) || (cv[i]!=0.)) k = n; 78 for (m=1; m<=n; m++) { 79 vgh[m][n]=cb[i]; vght[m][n]=cv[i]; i++; 80 if ((cb[i]!=0.) || (cv[i]!=0.)) k = n; 81 vgh[n][m-1]=cb[i]; vght[n][m-1]=cv[i]; i++; 82 if ((cb[i]!=0.) || (cv[i]!=0.)) k = n; 83 } 84 } 85 maxod = k; 86 field(6378.16, 298.25, 6371.2, maxod); 87 tcoef(vgh, vght, tzero, 0, dmy); tyear(year); 88} 89 90void igrfc(double fido, double fkeido, double hght, double *tf) 91{ double fx, fy, fz; 92 mfldg(fido, fkeido, hght/1000., &fx, &fy, &fz, tf); 93} 94 95void igrfm(double fm[6]) 96{ double gx, gy, gz, h, dip, dec; 97 gcomp(&gx, &gy, &gz); 98 h=sqrt(gx*gx+gy*gy); dip=atan2(gz,h); dec=atan2(gy,gx); 99 fm[0]=gx; fm[1]=gy; fm[2]=gz; fm[3]=h; fm[4]=dip*RAD; fm[5]=dec*RAD; 100} 101 102 103void sigrf(double year) 104{ int maxod, i, n, m, l; 105 double tzero, dmy[3]; 106 l=(int)(year-1970.)/5; if (l < 0) l=0; else if (l >= 7) l=6; 107 if (l < 2) maxod=8; else maxod=10; 108 tzero=(double)(l*5 + 1970); if (l==0) tzero=1965.; 109 if ((year<1955.) || (year>2005.)) 110 fprintf(stderr, "sigrf: IGRF not available for %8.3lf\n", year); 111 for (i=0,n=1; n<=maxod; n++) { 112 vgh[0][n]=rf[l][i]; 113 if (n<=8) vght[0][n]=sv[l][i]; else vght[0][n]=0.; 114 i++; 115 for (m=1; m<=n; m++) { 116 vgh[m][n]=rf[l][i]; 117 if (n<=8) vght[m][n]=sv[l][i]; else vght[m][n]=0.; 118 i++; 119 vgh[n][m-1]=rf[l][i]; 120 if (n<=8) vght[n][m-1]=sv[l][i]; else vght[n][m-1]=0.; 121 i++; 122 } 123 } 124 field(6378.16, 298.25, 6371.2, maxod); 125 tcoef(vgh, vght, tzero, 0, dmy); tyear(year); 126} 127 128void sdgrf(double year) 129{ int i, n, m, l; 130 double dmy[3]; 131 l=(int)(year-1945.)/5; if (l < 0) l=0; else if (l >= 9) l=8; 132 if ((year<1945.) || (year>1990.)) 133 fprintf(stderr, "sdgrf: DGRF not available for %8.3lf\n", year); 134 for (i=0,n=1; n<=10; n++) { 135 vgh[0][n]=df[l][i]; vght[0][n]=(df[l+1][i]-df[l][i])/5.; i++; 136 for (m=1; m<=n; m++) { 137 vgh[m][n]=df[l][i]; vght[m][n]=(df[l+1][i]-df[l][i])/5.; i++; 138 vgh[n][m-1]=df[l][i]; vght[n][m-1]=(df[l+1][i]-df[l][i])/5.; i++; 139 } 140 } 141 field(6378.16, 298.25, 6371.2, 10); 142 tcoef(vgh, vght, (double)(1945+l*5), 0, dmy); tyear(year); 143} 144 145void spgrf(double year) 146{ int i, n, m, l; 147 double dmy[3]; 148 l=(int)(year-1945.)/5; if (l < 6) l=6; else if (l >= 10) l=9; 149 if ((year<1975.) || (year>1995.)) 150 fprintf(stderr, "spgrf: PGRF not available for %8.3lf\n", year); 151 for (i=0,n=1; n<=10; n++) { 152 vgh[0][n]=df[l][i]; vght[0][n]=(rf[l-4][i]-df[l][i])/5.; i++; 153 for (m=1; m<=n; m++) { 154 vgh[m][n]=df[l][i]; vght[m][n]=(rf[l-4][i]-df[l][i])/5.; i++; 155 vgh[n][m-1]=df[l][i]; vght[n][m-1]=(rf[l-4][i]-df[l][i])/5.; i++; 156 } 157 } 158 field(6378.16, 298.25, 6371.2, 10); 159 tcoef(vgh, vght, (double)(1945+l*5), 0, dmy); tyear(year); 160} 161 162void gigrf_(int *gen, float *year) { gigrf(*gen, (double)*year); } 163void igrfc_(float *fi, float *fk, float *h, float *f) 164 { double df; igrfc((double)*fi,(double)*fk,(double)*h,&df); *f=df; } 165void igrfm_(float fm[6]) 166 { double dfm[6]; int i; igrfm(dfm); for (i=0; i<6; i++) fm[i]=dfm[i]; } 167void sigrf_(float *year) { sigrf((double)*year); } 168void sdgrf_(float *year) { sdgrf((double)*year); } 169void spgrf_(float *year) { spgrf((double)*year); } 170 171コード 172```### 前提・実現したいこと 173igrfによる磁場を計算するプログラムを学習しています 174### 発生している問題・エラーメッセージ 175 176c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../libmingw32.a(main.o):(.text.startup+0xc0): undefined reference to `WinMain@16' 177collect2.exe: error: ld returned 1 exit status 178 179### 該当のソースコード 180 181### 試したこと 182先生から型誓言がないといわれましたがよく分からないです 183### 補足情報(FW/ツールのバージョンなど) 184visualstudiocodeで実行しています。 185他のソースはコンパイルから実行まで上手くいきました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2020/12/31 06:32

コードを提示しましょう 質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
seikin_tv_love

2020/12/31 06:43

すいませんプログラムが長いので一部分を載せましたがわかりますでしょうか?
guest

回答1

0

ベストアンサー

C言語のプログラムでは、main関数(Windows向けのプログラムではWinMain関数)が必ず定義されてなければなりません
このエラーはまさに、その関数が定義されていない、というエラーです。

ということで、main関数を追加してみよう

投稿2020/12/31 06:53

y_waiwai

総合スコア88024

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

thkana

2020/12/31 10:51

> このエラーはまさに、その関数が定義されていない、というエラーです。 ではないでしょう。 MinGWのgccコンパイラでは、main関数がないと内部的な諸般の事情で'WinMainがない'というエラーになるという事情があるというのは一部で知られているかもしれませんが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問