luaとcの変数のやり取り

  • test.c
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"

#define getNumber(xxxL, xxxVarName, xxxVar) \
	lua_pushstring( xxxL , xxxVarName ); \
	lua_gettable( xxxL , LUA_GLOBALSINDEX ); \
	xxxVar = lua_tonumber( xxxL , -1 ); \
	lua_pop(xxxL , 1 );

#define setNumber(xxxL, xxxVarName, xxxVar) \
	lua_pushstring( xxxL , xxxVarName ); \
	lua_pushnumber( xxxL , xxxVar ); \
	lua_settable( xxxL , LUA_GLOBALSINDEX );

int main(int argc,char* argv[])
{
	double v;
	lua_State *L=lua_open();
	luaopen_base(L);
	luaopen_io(L);
	setNumber(L, "aaa", 123);
	lua_dofile(L,"a.lua");
	getNumber(L, "bbb", v);
	printf("%g\n", v);
	return 0;
}
print(aaa);
bbb = 456;