C言語で構造体と配列のエラー

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

C言語で構造体と配列のエラー

#1

投稿記事 by F55 » 14年前

おはようございます、こんにちは、こんばんは
この掲示板は初めて利用させていただきます、よろしくお願いします

さて本題なのですがタイトルにある通り構造体を使ったプログラムでエラーが出ます
ヘッダファイルが龍神録っぽいですがただのDOSアプリです
イカソース

コード:

/*main.c*/
#include<stdio.h>
#include"GV.h"

int main(void){
		x=jiki.x-enemy[0].x;
		y=jiki.y-enemy[0].y;
		if(x*x+y*y<rangrang*rangrang){
			printf("当たってる\n");
		}
		else{
			printf("当たってない\n");
		}
    return 0;
}

コード:

/*GV.h*/
#include"struct.h"

char_t jiki;
char_t enemy[10];

enemy[0].x=240;
enemy[0].y=160;
enemy[0].rang=30;

jiki.x=240;
jiki.y=450;
jiki.rang=30;

int x,y;
int rangrang=jiki.rang+enemy[0].rang;

コード:

/*struct.h*/
typedef struct{
	int x,y,rang;
}char_t;
EasyIDECとbccでビルドさせてみるとどちらにも「enemy」が再定義されていますと怒られてしまいます^^;
enemy[0]の部分を全部enemyにするとちゃんと出来るのですがなぜでしょうか?

C言語勉強に苦しんでる

Re: C言語で構造体と配列のエラー

#2

投稿記事 by C言語勉強に苦しんでる » 14年前

多重定義していないため、enemyが再定義されるとでるのではないのでしょうか?
enemyでいくのは、アドレスを指定しているため、エラーがでないのではないのでしょうか?

F55

Re: C言語で構造体と配列のエラー

#3

投稿記事 by F55 » 14年前

>多重定義していないため、enemyが再定義されるとでるのではないのでしょうか?
>enemyでいくのは、アドレスを指定しているため、エラーがでないのではないのでしょうか?

多重定義って何ですか?
enemyで行く場合はアドレスをしているとはどういう事なのでしょうか?

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: C言語で構造体と配列のエラー

#4

投稿記事 by h2so5 » 14年前

ヘッダファイルに 
enemy[0].x=240;
などの代入文は書けませんよ。

main.cの関数内に書くべきものです。

F55

Re: C言語で構造体と配列のエラー

#5

投稿記事 by F55 » 14年前

h2so5さん

言われたとおりにヘッダファイルは宣言だけにして代入をmain関数にやらせるとちゃんと実行できました
関数の外で変数に値を代入するのはダメなんですね、今まで知りませんでした
また何かあったときはよろしくお願いします、ありがとうございました

閉鎖

“C言語何でも質問掲示板” へ戻る