エラーの原因がわからない

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: エラーの原因がわからない

Re: エラーの原因がわからない

#11

by box » 3年前

う~ん、とりあえず、

コード:

int main(){
   GameMsg001();
   return 0;
}
みたいなmain関数を追加したら
どうですか?
とか、
エラーの原因は、プログラムの実行をmain関数から始めることになっているのに、そのmain関数が無いことですね。
とかの的確な回答があるのに、それが理解できないってことですか?

Re: エラーの原因がわからない

#10

by blue » 3年前

初心者すぎて申し訳ありません。
ソースコード付きでの説明は可能でしょうか?
言葉だけだとまだ理解しきれないところがあるので。

Re: エラーの原因がわからない

#9

by みけCAT » 3年前

エラーの原因は、プログラムの実行をmain関数から始めることになっているのに、そのmain関数が無いことですね。
Butter さんが書きました:
3年前
あと、ファイルの先頭に
GameMsg002()など、まだ定義されていない
関数のプロトタイプ宣言があるようですが、
コンパイラから見たら、
「は?あるって書いてあったのに
GameMsg002関数ねぇじゃん❗」って
なるので、
コンパイラから見たら、宣言がある時点でその関数は「ある」ということになります。
すなわち、関数を呼び出すコードがあるとき、引数や戻り値をどう扱うかがわかります。
コンパイルの段階ではそれで処理に十分であり、関数の定義は必要ありません。
(このため、関数の宣言だけを(ヘッダなどから)読んでコンパイルし、定義は別にコンパイルすることが可能になります)
Butter さんが書きました:
3年前
まだ定義していない関数の
プロトタイプ宣言は、コメントアウトするのが
無難かと思います。
ただし、1つまたは複数のコンパイルの結果をまとめて1個の実行可能ファイルにするリンクの段階において、
実際にその関数を使っているのに定義が無いと、困ってしまいます。(エラーになります)
間違って未実装の関数を使おうとしたことにコンパイルの段階で気付けるメリットも考えられるので、
「コメントアウトするのが無難」という主張は間違っているとはいえません。

Re: エラーの原因がわからない

#8

by Butter » 3年前

う~ん、とりあえず、

コード:

int main(){
   GameMsg001();
   return 0;
}
みたいなmain関数を追加したら
どうですか?

あと、ファイルの先頭に
GameMsg002()など、まだ定義されていない
関数のプロトタイプ宣言があるようですが、
コンパイラから見たら、
「は?あるって書いてあったのに
GameMsg002関数ねぇじゃん❗」って
なるので、まだ定義していない関数の
プロトタイプ宣言は、コメントアウトするのが
無難かと思います。

Re: エラーの原因がわからない

#7

by blue » 3年前

これだけです

Re: エラーの原因がわからない

#6

by Butter » 3年前

ソースファイルはそれ一つだけですか?
main関数は無いんですか?
何度もすいません

Re: エラーの原因がわからない

#5

by blue » 3年前

#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: エラーの原因がわからない

#4

by Butter » 3年前

関数そのものに問題があるわけでばない気がします。
出来ればコードを全て乗せて頂けますか?

Re: エラーの原因がわからない

#3

by blue » 3年前

エラー LNK1120 1 件の未解決の外部参照
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー LNK2019 未解決の外部シンボル _main が関数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) で参照されました。
このようなエラーが出ました

Re: エラーの原因がわからない

#2

by Butter » 3年前

とりあえず、どんなエラーか具体的に
教えて下さい。
コンパイルエラーか、実行時エラーか
(実行時に固まるとか)、コンパイルエラーなら、
その種類も。

エラーの種類とかが書かれてないと、
答えられるものも答えられないと思います。

エラーの原因がわからない

#1

by blue » 3年前

コード:

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]
何回やってもエラーが出てしまいます。
どこをなおせばいいでしょうか?

ページトップ