コンパイル時のエラー

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

コンパイル時のエラー

#1

投稿記事 by Ultimate » 15年前

エラーが起こるので、なぜ起こるのか教えてください。

ソースは

#include "DxLib.h"

#define pi 3.14159265

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ; // ウインドウモードに変更
if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 エラーが起きたら終了



//色の設定
int WHITE;
WHITE=GetColor(255,255,255);

//その他変数
int i,j;


//構造体作成
//敵の弾1
typedef struct{
int x[100]; //X座標
int y[100]; //Y座標
int r[100]; //ラジアン値
int flag[100]; //フラグ
int count[100]; //ループカウント
} tekitama1;

//初期化
//敵の弾1
for(i=0;i<=100;i++){
tekitama1.x=0;
tekitama1.y=0;
tekitama1.r=2pi/(100/i);
tekitama1.flag=0;
}



WaitKey() ; // 結果を見るためにキー待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}



エラーメッセージは

Error E2108 ファイルの場所 32: Improper use of typedef 'tekitama1' in function __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int)
Error E2108 ファイルの場所 33: Improper use of typedef 'tekitama1' in function __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int)
Error E2108 ファイルの場所 34: Improper use of typedef 'tekitama1' in function __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int)
Error E2379 ファイルの場所 34: Statement missing ; in function __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int)
Error E2108 ファイルの場所 35: Improper use of typedef 'tekitama1' in function __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int)
*** 5 errors in Compile ***

** error 1 ** deleting Debug\プロジェクト名.obj


よろしくお願いします。

Ultimate

Re:コンパイル時のエラー

#2

投稿記事 by Ultimate » 15年前

原因は構造体がうまくできていないことにあるようですが、解決策がわかりません。



//初期化
//敵の弾1
for(i=0;i<=100;i++){
tekitama1.x=0;
tekitama1.y=0;
tekitama1.r=2pi/(100/i);
tekitama1.flag=0;
}

を削除してコンパイルすると成功します。



構造体で、

//構造体作成
//敵の弾1
typedef struct{
int x[100]; //X座標
int y[100]; //Y座標
int r[100]; //ラジアン値
int flag[100]; //フラグ
int count[100]; //ループカウント
} tekitama1;

にしたら、この構造体の中のx[1]をたとえば指すとすれば

tekitama1.x[1]でいいと思ったのですが、うまくいきません。

for文のどこがエラーの原因でしょうか?

うしお

Re:コンパイル時のエラー

#3

投稿記事 by うしお » 15年前

//敵の弾1
typedef struct{
int x[100]; //X座標
int y[100]; //Y座標
int r[100]; //ラジアン値
int flag[100]; //フラグ
int count[100]; //ループカウント
} tekitama1;

typedefの作用によりこれでは変数が宣言されていません
この場合は単純にtypedefを消せばうまくいくはずです

構造体の定義、変数の確保について再度確認してみてください

Ultiamte

Re:コンパイル時のエラー

#4

投稿記事 by Ultiamte » 15年前

ありがとうございました。

使い方を勘違いしていたようです。

http://9cguide.appspot.com/16-01.htmlを参考に勉強しなおしました。

これからもお世話になると思いますが、どうぞよろしくお願いします。

初級者

Re:コンパイル時のエラー

#5

投稿記事 by 初級者 » 15年前

for(i=0;i<=100;i++){

このfor文で、iが100のとき、配列の定義範囲外の領域に
アクセスしてしまいます。
修正が必要です。

Ultiamte

Re:コンパイル時のエラー

#6

投稿記事 by Ultiamte » 15年前

ありがとうございました。

使い方を勘違いしていたようです。

http://9cguide.appspot.com/16-01.htmlを参考に勉強しなおしました。

これからもお世話になると思いますが、どうぞよろしくお願いします。

閉鎖

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