2017-03-11 117 views
-2

I次のC++コードを持っている:私は、Visual Studio 14 2015年にそれをコンパイルしようと、それが持つ行でエラーになる場合は:式は完全なオブジェクト型へのポインタでなければなりません

#define MATH_FASTCALL(name, fname) \ 
static int math_ ## name ## _precall (lua_State *L, StkId func, int nresults) { \ 
    StkId arg1 = func + 1; \ 
    llvm_arg_tonumber(L, arg1, 1); \ 
    setnvalue(func, fname(nvalue(arg1))); \ 
    L->ci--; \ 
    L->top = func + 1; \ 
    L->base = L->ci->base; \ 
    return PCRC; \ 
fallback: \ 
    return luaD_precall_c(L, func, nresults); \ 
} 

MATH_FASTCALL(abs, fabs) 

をMATH_FASTCALL:

式は、このコードに問題がある可能性がありどのような完全なオブジェクト型

へのポインタでなければなりませんか?

+1

マクロを展開できるR ++のようなものがない場合は、自分で展開してください。コンパイラは、どの部分が問題を引き起こしているかを正確に伝えます。その部分を保ち、可能な限り単純化し、残りの部分を取り除き、あなた自身で動くことができる[mcve]で終わるようにします。それがSOに尋ねるのが適切なときです。余分なコードとマクロがあっても、問題を再現するためにこれを実行することはできません。 – chris

答えて

0

マクロが不完全な型への参照を逆参照しているようにエラーメッセージが表示されます。マクロを呼び出す前にlua_Stateとタイプlua_State::ciが(宣言されているだけでなく)定義されていることを確認してください。

+0

Tuple_cat、ありがとう、私はcppを初めて使っています。私はhttps://github.com/neopallium/llvm-luaをビルドしようとしています。 typedef struct lua_State lua_Stateが見つかりました。含まれている "lua.h"ファイルには、他に何が恋しくなるのですか? – max

+0

これは 'lua_State'の前方宣言です。あなたには定義が必要です。 – emlai

+0

何らかの理由でインクルードされていなかった別のファイルでこのファイルが見つかりました。ありがとうございました! – max

関連する問題