WinMain関数が・・・

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

WinMain関数が・・・

#1

投稿記事 by たのもー » 18年前

みなさんお久しぶりです。

最近「book off」でプログラムはなぜ動くのかという本を買いました。
まぁそんなことはどうでもいいのですが・・

その本に載っているプログラムでコンパイルできないものがあります。
コンパイルしようとすると

エラー E2040 window.c 10: 宣言が正しく終了していない(関数 WinMain )
エラー E2027 window.c 16: メモリ上に配置されなければならない(関数 WinMain )
警告 W8008 window.c 26: 条件が常に真(関数 WinMain )
警告 W8066 window.c 32: 実行されないコード(関数 WinMain )
エラー E2277 window.c 34: 左辺値が必要(関数 WinMain )
警告 W8057 window.c 42: パラメータ 'hInstance' は一度も使用されない(関数
WinMain )
警告 W8057 window.c 42: パラメータ 'hPrevInstance' は一度も使用されない(関数
WinMain )
警告 W8057 window.c 42: パラメータ 'lpCmdLine' は一度も使用されない(関数
WinMAin)
警告 W8057 window.c 42: パラメータ 'nCmdShow' は一度も使用されない(関数
WinMain)

とでます。
本とよく見比べたのですがたぶん相違はないと思います。
どこが悪いのかご指導よろしくお願いしますm(_ _)m

↓↓  ソース  ↓↓
<window.c>

#include "windows.h"

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )

{
float f;
unsigned long 1;
int i;
char s[80];

f = (float)0.75;

memcpy(&1, &f, 4);

for (i = 33; i >= 0; i--)
{
if ((i == 1) || (i == 10))
{
s = '-';
}
else
{
if (1 % 2 == 1)
{
s = '1';
}
else
{
s = '0';
}
1 /= 2;
}
}
s[34] = '\0';

MessageBox(NULL, s, "単精度浮動小数点数の表し方", MB_OK);

return 0;
}


長くなってスミマセンm(_ _)m


P.S
管理人さん、かなり遅れてですが「50万」突破おめでとうございます。(^\^)

YuO

Re:WinMain関数が・・・

#2

投稿記事 by YuO » 18年前

エラーメッセージ読めば,ある程度場所の推測がつきそうな物ですが……。

10行目,26行目,32行目の元のコードは数字の1ではなくLの小文字のlではないですか?
# 26行目は%の前にある1の方。


ついでに,
> #include "windows.h"

#include <windows.h>
に,
> int APIENTRY WinMain

int WINAPI WinMain
にした方がWindows SDKの記述に合わせることができます。

それから,
> f = (float)0.75;
はキャストの誤用なので,
f = 0.75f;
とすべきです。

閉鎖

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