こちらのサイトからBullさんのプログラム解答者様のBullさんから頂いたプログラムに関して質問です。
Bullさんに載せて頂いたプログラムを参考に下に書いた全体のプログラムでのように作ったのですが、なぜかPad[PAD_RIGHT]のPAD_RIGHTに赤い下線部でエラーが出ます。なぜでしょうか。
このプログラムがBullさんから頂いたプログラムです。
#include <DxLib.h> int Pad[32]; int gpUpdatePad() { int padStat = GetJoypadInputState(DX_INPUT_KEY_PAD1); //入力状態を padStat に格納 for (int i = 0; i < 28; i++) { //ボタン28個分ループ if (padStat & (1 << i)) { //ボタンiの入力フラグが立っていたら Pad[i]++; //加算 } else { //入力がなければ Pad[i] = 0; //0 にする } } return 0; } int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK); //ウィンドウモード変更,初期化,裏画面設定 int x = 320; int y = 240; const int PAD_DOWN = 0; const int PAD_LEFT = 1; const int PAD_RIGHT = 2; const int PAD_UP = 3; const int KEY_ESC = 12; // while( 裏画面を表画面に反映, メッセージ処理, 画面クリア ) while (!ScreenFlip() && !ProcessMessage() && !ClearDrawScreen()) { gpUpdatePad(); if (Pad[PAD_LEFT]) { if (x > 4) x -= 4; } if (Pad[PAD_RIGHT]) { if (x < 622) x += 4; } if (Pad[PAD_UP]) { if (y > 4) y -= 4; } if (Pad[PAD_DOWN]) { if (y < 464) y += 4; } DrawFormatString(x, y, GetColor(255,255,0), "●"); if (Pad[KEY_ESC]) break; } DxLib_End(); return 0; }
こちらが全体のプログラムです。
リンク内容
以下がエラーです。
1>
11>test.cpp 21>D:\DxLib_VC\サンプルプログラム実行用フォルダ\test.cpp(244,7): error C2109: 配列または、ポインターでない変数に添字が使われました。 31>プロジェクト "VisualStudio_2019用.vcxproj" のビルドが終了しました -- 失敗。 4========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== 5 6コード
環境に関して書いていなくてすいません。
環境
- Windows10
- visual studio 2019
- エディタはC++です(タグもC++の方に変えさせていただきます)
- X64
「赤い下線部」といいますが、一体何で見ているのでしょうか?また、コンパイルは問題なくできていると考えて良いですか?
ごめんなさい、コンパイルは出来ません。
また張り付けたプログラムが違うものでした。取り替えます。
あなたが聞きたいのは「赤い下線が出る理由」ですか?それとも「コンパイル時にエラーになる理由」ですか?質問からは前者を聞いているように思えます。前者を聞きたいと言うことでよろしいですか?
度々すいません。赤い下線が出る理由がコンパイル時にエラーになる理由ならば、コンパイル時にエラーの源信を聞きたいです。
もし二つとも違う原因により起こっているならば
赤い下線が出る理由とコンパイル時にエラーになる理由の両方が聞きたいです。
「赤い下線」について知りたいのであれば、一体何で見たときの話なのかを明記してください。メモ帳なのあEmacsなのかvimなのかそういったことが他に人にはわかりません。
あと、タグにCとC++の両方がありますが、どちらなのですか?リンク先のコードにはCと書いていますが、エラーにはcppという拡張子が付いています。
CとC++は別の言語です。同じ部分も多いですが、CにはできてC++にはできない部分もあります。どちらなのかはっきりさせて、タグの片方消してください。
ややこしくてすいませんraccyさん、解決しましたので大丈夫です。
一体何が解決したのでしょうか?epistemeさんの回答はコンパイル時のエラーについての解決にはなりますが、「なぜ赤い下線が出るのか」ということについては何の解決にもなっていませんよ。これで解決しましたと言っているのでは、結局あなたが聞きたいことは何だったのかわかりません。コンパイルエラーに対する解決方法だけ聞ければ良かったのですか?「赤い下線」はどうでも良かったのですか?それならそうと赤い下線云々の部分は全て削除して、コンパイルエラーがでたから解決したいと質問を書き直してください。
これではせっかくのepistemeさんの回答が質問に対して飛躍しているように見えてしまいます。
...そやね。僕はコンパイルエラーの原因を指摘したが、赤線については言及していない。
# その赤線が構文上のエラーを指摘していたのでない限り。
epistemeさんのご指摘の通り変数名の重複が原因だったため、配列で置いた変数自体を数値で置いてしまったために起きたエラーだとわかりました。
回答2件
あなたの回答
tips
プレビュー