• ベストアンサー

Windowsゲームプログラミングを始めたのですが

最近ゲームのプログラムを始めた者です。 C言語でWindowsプログラムを書き始めたのですが、最初の宣言を行った時点でコンパイル時に大量のエラーが出てしまいました。 ↓が内容です。 #include<windows.h> #include<stdio.h> #include<stdlib.h> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){ } 使用OSはVistaです。 急いではいないので、どなたか解決法を知っている方、ご指導お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

-pedantic-errorsオプションを付けてはいけません。

smily_k_c
質問者

お礼

お礼が遅れて申し訳ありません。 仰るとおり、コンパイルオプションが問題だったようです。 無事、コンパイルに成功しました。 学校で習ったオプションをそのまま使ってるのがまずかったんですね。 オプションをもうちょっと勉強してみます。 ありがとうございました。

その他の回答 (5)

回答No.6

>VC++2008はエディタ機能もあるんでしょうか? 綜合開発環境ですのでエディタやデバッガも付いています。 少し重いですが、かなり使いやすい部類です。 eclipse のように変数名などを補完してくれたりします。 Widnwos プログラミングとの親和性が高いのも見逃せません。 (VC++以外でのWidnowsプログラミングのほうが少ない気がします)

smily_k_c
質問者

お礼

重いのですか・・・ 自分のPCはスペックが低いので心配ですが、とりあえずインストールしてみます。 では、本題に関係ない質問までして申し訳ありませんでした。 皆さんご指導ありがとうございました。 またご厄介になるときもあるでしょうが、その時はまた厳しくご指導お願いします。

回答No.5

>戻り値がなくても問題なく動作するようなのですが、 ダメ!ゼッタイ! C言語は戻り値なくてもエラーにはならないけど、 書かなくても"何かしら"返しているので危険極りないです。 (この"何かしら"がどこのアドレスの何なのか不明で怖い) あと警告が出ると思います。 出ない場合は警告レベルが低いか、 コンパイラがいい加減のどちらかです。 ほかの言語では書かないとエラーになると思います。 戻り値の型が void でないなら必ず return で戻り値を返してください。

smily_k_c
質問者

お礼

他のデータに影響を及ぼす恐れがあるということでしょうか。 確かに危険ですね・・・ わかりました、かならずreturnは入れるように心掛けます。

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.4

★アドバイス >・戻り値・引数は int ではなく INT です  ↑  いいえ。  int型で正しいです。  http://msdn.microsoft.com/ja-jp/library/cc364870.aspx >VC++2008(無料) で開発するのをお勧めしますよ。  ↑  こちらは賛成ですね。  Cygwinでも良いが…。

参考URL:
http://msdn.microsoft.com/ja-jp/library/cc364870.aspx
smily_k_c
質問者

補足

INTでもやってみましたが問題なく出来るようです。 VC++2008はエディタ機能もあるんでしょうか?

回答No.3

Windowsゲームプログラミングならば VC++2008(無料) で開発するのをお勧めしますよ。 多分VC++2008ならエラーは出ないと思いますから。 重箱の隅をつつくようですが、 ・戻り値がありません ・戻り値・引数は int ではなく INT です

smily_k_c
質問者

お礼

なるほど、VC++2008ですね、試してみます。 戻り値がなくても問題なく動作するようなのですが、 やはり念のために入れたほうがいいのですか?

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

実際にコンパイルしてみましたが、エラーも警告も出ませんでした。 CygwinおよびMinGWで確認しました。 > どなたか解決法を知っている方、ご指導お願いします。 まずは処理系を明確にしてください。 その上で、実際のエラーメッセージをそのまま補足してください。

smily_k_c
質問者

補足

さっそく試していただいてありがとうございます。 同じくCygwinでコンパイルしました。 ファイル名:win.c コンパイルコマンド:gcc -Wall -ansi -pedantic-errors -o test test.c error:type of bit-field `cbRegs' is a GCC extension error:type of bit-field `AllowDemotion'is a GCC extension これと同じエラーが大量に出てしまいます。 すみませんが、わかりましたら御回答お願いします。

関連するQ&A

  • HINSTANCEの型

    LPSTR は char* なので、 int WINAPI WinMain(HINSTANCE hInstance ,HINSTANCE hPrevInstance , LPSTR lpCmdLine ,int nCmdShow ) を int WINAPI WinMain(HINSTANCE hInstance ,HINSTANCE hPrevInstance , char* lpCmdLine ,int nCmdShow ) と書き換えてもコンパイルできます。 HINSTANCEはvoid *型だという記述を見たのですが、void *で書き換えてもエラーがでてしまいます。 どうしたらよいのでしょうか。

  • AppleScriptでプログラミング

    私は最近C言語のプログラミングに興味を持ち、Mac os 10.3.9に入っていた「AppleScript」の中の「スクリプトエディタ」で、インターネットで見つけた文字列、例えば下の #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ if( DxLib_Init() == -1 ) return -1; WaitKey() ; DxLib_End() ; return 0 ; } などを打ち込んでみたのですが、さっぱりコンパイルできません。 なにしろ初心者なもので、何がなんだかさっぱり分からず困っています

  • Windowsアプリケーションをどうしても作りたいのですが

    /* OS==XP コンパイラー==Borland C++5.5 */ #include<windows.h> int WINAPI WinMain( HINSTANCE hInstance , HINSTANCE hPrevInstance , LPSTR lpCmdLine , int nCmdShow ) { return 0; } で Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照) となるのでexeファイルができません。 解決法を是非教えてください。 C言語歴2日+1H

  • lpCmdLineについて

    #include<windows.h> int WINAPI WinMain( HINSTANCE hInstance , HINSTANCE hPrevInstance , PSTR lpCmdLine , int nCmdShow ) { MessageBox(NULL , lpCmdLine , TEXT("Kitty") , MB_ICONINFORMATION); return 0; } とやったのですが、lpCmdLineのパスが表示されません。なぜでしょうか?

  • 画像が出力されません

    画像出力するには int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow); から引数"lpCmdLine"を使うことにより画像が出力できる事を聞いたのですが本当でしょうか? うまく出力できません どのようにしたらよいのか具体的にソースをつけて教えてください。 画像はraw画像で出力します

  • コンパイルできません

    #include <windows.h> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){ MessageBox(NULL, "Kitty on your lap","メッセージです", MB_OK); return 0; } の様なプログラムを組んだところ Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照) の様にエラーになってしまいました。 どんな理由でエラーになっているのか調べたのですがよくわかりません。 一番初めのwin32APIを使ったプログラムで上手くコンパイルできないと 勉強が進まないので、わかる方教えてください。

  • VS2019でWinMainエラー発生

    以下メッセージを表示するだけのプログラムですが、以前はビルドできたのですが、VS2019になってからWinMainで「整合性のないインスタンス・・・」とエラーが出ます。なんででしょうか。 お願いします。 またVCをVBSみたいに黒い画面が出ずに引数を使用したいですが、その他アドバイスもお願いします。 #include <windows.h> int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { MessageBox( NULL, TEXT("Hello, world!"), TEXT("Hello"), MB_OK | MB_ICONINFORMATION ); return 0; }

  • DEVICECHANGE() の受け取り

    常駐し、USBメモリなど追加された場合を検出したいです。 どうしたらいいでしょうか? 次のソースでwin32空きプロジェクトを作成します。 #include<windows.h> int WINAPI WinMain( HINSTANCE hInstance , HINSTANCE hPrevInstance , LPSTR lpCmdLine , int nCmdShow ) { return 0; } ON_WM_DEVICECHANGE() というメッセージを受け取るそうですがどうしたらいいでしょうか? 例えば、USBドライブを検出した場合、メッセージを表示するようにしたいです。

  • 外部シンボル "_main"は未解決です

    「LIBC.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です」というエラーが発生しましたが、何をみればいいのかわかりません。int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )がソースについています。

  • 【Windowsアプリ】ファイルのドラッグ&ドロップについて

    C言語でのWindowsアプリの勉強をしています。(始めたばかりです) ***.exeにファイルをD&Dした際、 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) 上記の"lpCmdLine"にファイルパスが入るのはわかったのですが、別のファイルパスの取得方法として、 1.***.exeを実行 2.ウィンドウ表示 3.ウィンドウ内にファイルをD&D 4.ファイルパスを取得 の方法がわかりません。 DragAcceptFiles()や、DragQueryFile()を使うと思うのですが、WinAPIの使い方がいまいち良くわかっていない状況です。 自分で勉強するべきというのは承知の上でのお願いしたいのですが、どなたか出来ればサンプルソースなど教えて頂けるとうれしいです。 環境はテキストエディタでソースを作成→Borland C++ Compiler 5.5でコンパイルしています。

専門家に質問してみよう