int GameMsg001(void)
{
char ch;
printf("do you fight the dragon? [y/n]");
scanf("%c", &ch);
switch (ch) {
case 'y':
puts("you dead!");
break;
case 'n':
puts("you couldn't escape");
break;
default: puts("you should keep the rule!");
}
puts("GAME OVER");
getchar();
return 0;
}
[\code]
何回やってもエラーが出てしまいます。
どこをなおせばいいでしょうか?
エラーの原因がわからない
エラーの原因がわからない
Re: エラーの原因がわからない
とりあえず、どんなエラーか具体的に
教えて下さい。
コンパイルエラーか、実行時エラーか
(実行時に固まるとか)、コンパイルエラーなら、
その種類も。
エラーの種類とかが書かれてないと、
答えられるものも答えられないと思います。
教えて下さい。
コンパイルエラーか、実行時エラーか
(実行時に固まるとか)、コンパイルエラーなら、
その種類も。
エラーの種類とかが書かれてないと、
答えられるものも答えられないと思います。
とても暇で忙しい
Re: エラーの原因がわからない
エラー LNK1120 1 件の未解決の外部参照
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー LNK2019 未解決の外部シンボル _main が関数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) で参照されました。
このようなエラーが出ました
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー LNK2019 未解決の外部シンボル _main が関数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) で参照されました。
このようなエラーが出ました
Re: エラーの原因がわからない
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
void GameMsg_prologue(void);
int GameMsg_ending(void);
int GameMsg001(void);
int GameMsg002(void);
int GameMsg003(void);
void InputYesNo(void);
int GameMsg001(void)
{
char ch;
printf("do you fight the dragon? [y/n]");
scanf("%c", &ch);
switch (ch) {
case 'y':
puts("you dead!");
break;
case 'n':
puts("you couldn't escape");
break;
default: puts("you should keep the rule!");
}
puts("GAME OVER");
getchar();
return 0;
}
[\code]
現段階ではこれがすべてです
Re: エラーの原因がわからない
う~ん、とりあえず、
みたいなmain関数を追加したら
どうですか?
あと、ファイルの先頭に
GameMsg002()など、まだ定義されていない
関数のプロトタイプ宣言があるようですが、
コンパイラから見たら、
「は?あるって書いてあったのに
GameMsg002関数ねぇじゃん❗」って
なるので、まだ定義していない関数の
プロトタイプ宣言は、コメントアウトするのが
無難かと思います。
どうですか?
あと、ファイルの先頭に
GameMsg002()など、まだ定義されていない
関数のプロトタイプ宣言があるようですが、
コンパイラから見たら、
「は?あるって書いてあったのに
GameMsg002関数ねぇじゃん❗」って
なるので、まだ定義していない関数の
プロトタイプ宣言は、コメントアウトするのが
無難かと思います。
とても暇で忙しい
Re: エラーの原因がわからない
エラーの原因は、プログラムの実行をmain関数から始めることになっているのに、そのmain関数が無いことですね。
すなわち、関数を呼び出すコードがあるとき、引数や戻り値をどう扱うかがわかります。
コンパイルの段階ではそれで処理に十分であり、関数の定義は必要ありません。
(このため、関数の宣言だけを(ヘッダなどから)読んでコンパイルし、定義は別にコンパイルすることが可能になります)
実際にその関数を使っているのに定義が無いと、困ってしまいます。(エラーになります)
間違って未実装の関数を使おうとしたことにコンパイルの段階で気付けるメリットも考えられるので、
「コメントアウトするのが無難」という主張は間違っているとはいえません。
コンパイラから見たら、宣言がある時点でその関数は「ある」ということになります。
すなわち、関数を呼び出すコードがあるとき、引数や戻り値をどう扱うかがわかります。
コンパイルの段階ではそれで処理に十分であり、関数の定義は必要ありません。
(このため、関数の宣言だけを(ヘッダなどから)読んでコンパイルし、定義は別にコンパイルすることが可能になります)
ただし、1つまたは複数のコンパイルの結果をまとめて1個の実行可能ファイルにするリンクの段階において、
実際にその関数を使っているのに定義が無いと、困ってしまいます。(エラーになります)
間違って未実装の関数を使おうとしたことにコンパイルの段階で気付けるメリットも考えられるので、
「コメントアウトするのが無難」という主張は間違っているとはいえません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: エラーの原因がわからない
初心者すぎて申し訳ありません。
ソースコード付きでの説明は可能でしょうか?
言葉だけだとまだ理解しきれないところがあるので。
ソースコード付きでの説明は可能でしょうか?
言葉だけだとまだ理解しきれないところがあるので。
Re: エラーの原因がわからない
とか、
とかの的確な回答があるのに、それが理解できないってことですか?エラーの原因は、プログラムの実行をmain関数から始めることになっているのに、そのmain関数が無いことですね。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。