アプリ版:「スタンプのみでお礼する」機能のリリースについて

[lex.h]
http://kari.to/upload/source/2737.xxx
[lex.cpp]
http://v.isp.2ch.net/up/270f0a944e6e.htm
[perser2.cpp]
http://v.isp.2ch.net/up/93d829742fc7.htm

これらのファイルを
 g++ parser2.cpp lex.cpp -o parser2
としてやる事でユニックス上ではコンパイルできたのですが、同じファイルらを使ってもウィンドウズ上のMinGWでは

parser2.cpp:329: `main' must return `int'
lex.cpp: In member function `TToken* TLex::getConstant()':
lex.cpp:60: warning: passing `double' for argument 2 of `
TToken::TToken(TTokenID, int, double, int, char*, int)'

というエラーが出ました。どのようにすればウィンドウズ上でもコンパイルできるのでしょうか。


また、
 g++ parser2.cpp lex.cpp -o parser2
のような二つのソースファイルから一つの実行ファイルを作っているようですが、このような方法について教えていただけないでしょうか。
宜しくお願い致します。

A 回答 (1件)

エラーは2種類。


1つめが完全なエラーとして処理されて、実行ファイルが作られていないようです。
perser2.cppにあるmain関数の返り値をintにして、最後に
return 0;
でも入れてください。
C言語の仕様としては、こちらのほうが正式です。
警告だけで流してくれるコンパイラも多いですが。

2つめはただの警告(Warning)。
残しておくと妙なバグの原因になったりするので、できるだけ消しておいたほうがいいです。
lex.cppのgetConstant()にある、
double v;

int v;
ぐらいに変えてみてください。
何でここにわざわざdoubleを使ってるか謎ですけど・・・

コンパイルオプションに-Wallを追加しておくと、もっと細かい警告(1回も使わない変数を宣言してるとか)も出してくれます。
無視しても平気な警告が多いですが、潰せるものは潰しておいたほうがいいです。

コンパイラの出すエラーなんて簡単な英語が多いですから、読む癖をつけておいたほうがいいですよ。
良く出てくるエラーの種類なんてたかが知れています。
    • good
    • 0
この回答へのお礼

一つ目と二つ目を両方修正するとまたいろいろとエラーが出て実行ファイルは作成されませんでしたが、一つ目の完全なエラーの方だけを教えていただいた通り修正した場合、
lex.cpp: In member function `TToken* TLex::getConstant()':
lex.cpp:60: warning: passing `double' for argument 2 of `
TToken::TToken(TTokenID, int, double, int, char*, int)'
の警告は出ましたが、実行ファイルは作成され意図した動作をしました。ありがとうございます。

お礼日時:2003/12/02 17:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!