2011-08-10 10 views
0
warning: argument to `int' from `lua_Number' 

lua_tonumber関数を使用してこれらの警告が表示されます。何が問題ですか?これらのC++警告を取り除くにはどうすればいいですか?

+4

問題を示すいくつかのコード例が役立ちます。 –

+3

警告を生成するコード行を表示します。 – aroth

+0

どのコンパイラ?しかし、luaはC++で大量の警告を生成する傾向があります。おそらくダブルスでしか動作していないluaと何か関係があり、あなたはintまたはその逆を渡しています。 –

答えて

0

提供し、予備情報に基づいて、私の答えはこれです:

lua_Numberはdoubleです。だからintに変換することについて不平を言っている。

それを変換する最も簡単な方法はこれです:

lua_Number a = 3.7; 
int b; 
b = static_cast<int>(a+0.5) 

この方法:あなたはそれを丸めるしたい場合、あなたはこのような何かを行うことができます

lua_Number a = 3.7; 
int b; 
b = static_cast<int>(a) 

しかし、bは3になります接尾辞が0.5以上のすべての数字が丸められることを保証できます。

しかし、ここでどのような解決策を選ぶ必要がありますか? http://pgl.yoyo.org/luai/i/lua_tonumberから

+0

私はたった今 'reinterpret_cast (a)'のようなコードを見たことがあります。どのように書いたかのような山かっこでも機能するのでしょうか? ( 'reinterpret_cast ') – Ponkadoodle

+0

これはタイプミスです。それは構文エラーです。 – Marlon

+2

''をしてもよろしいですか? 'int'や' double'のような数値型間の変換は、キャストを全く必要とすべきではありません。暗黙的に変換を行うことができます( 'double d = 3.7; int b = d;')。 –

3

lua_Number lua_tonumber (lua_State *L, int index); 

それは第二パラメータにint型を望んでいます。あなたの警告は、有益には、「int' from lua_Numberへの議論」と述べています。だから、おそらくint型ではなく、第2引数の 'lua_Number'を渡しているでしょう。 'lua_Number'はdoubleです。

ルアのスタックのインデックス番号なので、ダブルを渡すことは意味をなさない。 lua_Numberを渡すとコードが間違っている可能性があります。

-1

static_castを試しますか?通常は警告を抑制しますが、私はLuaに慣れていません。

+2

そして、通常、問題をコード化します。 –

+0

それは時々刻々と状況に依存します。警告が精度の低下に過ぎない場合、static_castは許容以上です。 – Frigo

+0

精度の低下を修正することは、より受け入れられます。 –

4

lua_Numberintを使用する場合は、lua_tointegerを使用してください。

関連する問題