ページ 11

s2. サウンドノベル風文字列表示法1 のエラーについて

Posted: 2008年5月03日(土) 15:57
by こめかみ
はじめまして。最近ゲームプログラミングの館で勉強をしているこめかみと申します。
触れ込みのとおり大変わかりやすく管理人のDixqさんには感謝の念が尽きません。

早速質問です。
サンプルプログラムを上から一つづつ咀嚼してる最中なのですが、タイトル通り"s2. サウンドノベル風文字列表示法1"のサンプルプログラムのコンパイルでエラーが解決できなく完全にお手上げ状態で困っています。
環境はWindowsXP,BCCでエラーの内容は以下のとおりです。

> c:\borland\bcc55\Bin\make.exe -fDebug\test.mak TARGET
MAKE Version 5.2 Copyright (c) 1987, 2000 Borland
bcc32 -W -3 -Od -w- -AT -pc -H- -k -b -v -y -DDEBUG -nDebug -c D:\ゲームプログラミングの館\test\DrawPixel.cpp
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
D:\ゲームプログラミングの館\test\DrawPixel.cpp:
エラー E2264 D:\ゲームプログラミングの館\test\DrawPixel.cpp 4: 式が必要
*** 1 errors in Compile ***

** error 1 ** deleting Debug\DrawPixel.obj

Make End !! (Elapsed time 0:01.500)


他のサンプルプログラムは問題なくコンパイル(メイク?コンパイルとメイクの違いがわかりません)後、実行できて来ました。別のサンプルプログラムでコンパイルしても滞りなく実行できますので環境設定を書き換えてしまったと言うわけでは無いように思います。

何が問題で何を直せばこのコンパイルが成功するのか。どうぞよろしくお願いします。

似たような結果を出すサンプルプログラムはDXライブラリ本家にもありそちらは問題なく実行迄こぎつけるのですが。僕はこちらでお世話になるからにはこちらのサンプルも把握したいと思っています。

ええと・・・一応スクショも。これでいいのかな?間違えたらすみません。

Re:s2. サウンドノベル風文字列表示法1 のエラーについて

Posted: 2008年5月03日(土) 16:33
by ibis
原因はoldKeyの初期化です。
初期化のやり方を変えてみてください。

Re:s2. サウンドノベル風文字列表示法1 のエラーについて

Posted: 2008年5月03日(土) 17:23
by こめかみ
oldKey[256]=""にしたら実行できました。ibisさんありがとうございました。

あと、このプログラムはサンプルのコピーなのでサンプルの間違いということになるのでしょうか。
管理人さんに伝えたほうがいいのかな。

あの、ココを見てたら直してくださいね。それでは。

Re:s2. サウンドノベル風文字列表示法1 のエラーについて

Posted: 2008年5月03日(土) 18:06
by ibis
いえ、コンパイラの違いによるものです。
BCCではエラーですが、Visual C++では正常にコンパイルできますよ。
ちょっと試してみました。
 コンパイルできるのは
  VC++
  GCC
 できないのは
  BCC
  DMC
 何故かコンパイルできてリンクできないのは
  LightC
という結果に。
中途半端なことに、ほぼ50:50ですねぇ。

Re:s2. サウンドノベル風文字列表示法1 のエラーについて

Posted: 2008年5月03日(土) 18:15
by こめかみ
同じ言語でもコンパイラによって違うのですか。
勉強になります。

Re:s2. サウンドノベル風文字列表示法1 のエラーについて

Posted: 2008年5月03日(土) 18:32
by YuO
> 同じ言語でもコンパイラによって違うのですか。

コンパイラによって,どこまで標準に準拠しているかや,拡張をしているかが異なります。
また,C/C++にはImplementation-definedという,標準がコンパイラに決定を依存している部分もあります。

今回の場合,ISO/IEC 14882:2003の8.5.1 Aggregatesの第8段落第2文に
> An empty initializer-list can be used to initialize any aggregate.
とあるので,該当箇所でエラーが発生するのは非標準の振る舞いということになります。

Re:s2. サウンドノベル風文字列表示法1 のエラーについて

Posted: 2008年5月03日(土) 19:01
by こめかみ
ええと、ISO/IEC 14882:2003の8.5.1 Aggregates というのはどこにあるんでしょうか。

Re:s2. サウンドノベル風文字列表示法1 のエラーについて

Posted: 2008年5月03日(土) 19:17
by こめかみ
あ、書籍でしょうか。ありがとうございます。

Re:s2. サウンドノベル風文字列表示法1 のエラーについて

Posted: 2008年5月03日(土) 19:22
by ibis
ISO/IECの国際規格ですねぇ。
14882でしたらC++ですね。

ISOよりもJISの方がわかりやすいかと思いますよ。
内容は同じなのですが、ISOは英語でJISは日本語です。

JISのC言語の規格はこのサイトにあります。
http://www.jisc.go.jp/app/pager?id=8911

同じく、C++はこちら。
http://www.jisc.go.jp/app/pager?id=9014

Re:s2. サウンドノベル風文字列表示法1 のエラーについて

Posted: 2008年5月03日(土) 19:31
by こめかみ
返信ありがとうございます。
せっかくリンクしていただいたのですがリンク先にファイルがありませんでした。
ググれば見つかるのかな。

Re:s2. サウンドノベル風文字列表示法1 のエラーについて

Posted: 2008年5月03日(土) 19:55
by ibis
あ、すみません。

リンク先の上のほうに「PDF Adobe」ってかかれた小さい画像がありますよね。
それをクリックしてみてください。

Re:s2. サウンドノベル風文字列表示法1 のエラーについて

Posted: 2008年5月03日(土) 20:00
by ibis
・・・じゃなかった。
確かにCの方はリンク切れですね。
こちらが正しいアドレスです。
http://www.jisc.go.jp/app/pager?id=9674

Re:s2. サウンドノベル風文字列表示法1 のエラーについて

Posted: 2008年5月03日(土) 20:05
by ibis
・・・あれ、何度か試しましたが、リンク切れでも無いっぽいですよ?
行けたり行けなかったりします。
というかC規格のアドレスは2回載せましたが、どちらでも同じところにつながってるっぽいです。

Re:s2. サウンドノベル風文字列表示法1 のエラーについて

Posted: 2008年5月03日(土) 20:22
by こめかみ
IEとFIREFOXとoperaで試しましたがダメでした。
operaだけ少し表示が違うようですが。
うーん。
http://www.jisc.go.jp/
ここには問題なく繋がるのですが。

Re:s2. サウンドノベル風文字列表示法1 のエラーについて

Posted: 2008年5月03日(土) 20:32
by こめかみ
言語の検索でたどりつけました。

あ、普通にクリックで落とせますね。失礼しました。
operaで別のタブで開くのが癖になっているもので。

ありがとうございます。

Re:s2. サウンドノベル風文字列表示法1 のエラーについて

Posted: 2008年5月04日(日) 20:18
by 管理人
VC++でプログラムを書かれる事を前提としたサンプルなので、ほかのコンパイラの事を考えていませんでした。
確か{}の所を{0,}とすればよかったのではないかと思います。
他にもfor(int i=0;)という書き方はC++のコンパイラではないとエラーになると思いますし、
BCCではextern文はmain関数内で宣言出来ないなど、色々とVC++以外ではエラーになることが多いと思います。
なるべく、多いコンパイラで問題ないように修正していこうとおもいます。
混乱させてしまいすみません。

Re:s2. サウンドノベル風文字列表示法1 のエラーについて

Posted: 2008年5月06日(火) 19:37
by こめかみ
そうなんですか。
つまずいたら質問に来ますので、その時はよろしくお願いします。