2009-06-05 20 views
0

Ich habe eine globale Variable:Konst Doppel von Lua initialisiert

const double myvar = 5.1; 

Nun, ich dies diese Werte von Lua zu lesen konvertieren.

Allerdings kann ich nicht einfach tun:

const double myvar = lua_tonumber(L,1); 

Da main() muss zuerst die Lua Interpreter usw. starten ausführen, aber wenn ich myvar danach erklären, wird es nicht global sein.

Gibt es eine Möglichkeit, eine globale Konstante const zu erreichen, die ihren Wert von Lua nimmt?

Antwort

5

Die feinen Verästelungen const kann nur dann vollständig verstanden werden, nach Sprache, aber die Grundidee einer const Variable ist, dass ihr Wert zur Kompilierzeit angegeben wird. Lua-Werte können erst erzeugt werden, wenn es einen Lua-Interpreter gibt, der den Aufruf lua_open() erfordert, was bis zur Laufzeit nicht möglich ist. So keine, gibt es keine (sichere, vernünftige) Art, eine const Variable zu haben, deren Wert von Lua bestimmt wird.

0

Sie können verletzen Konstantheit wie folgt aus:

*(double*) & myvar = lua_tonumber(L,1); 

aber es ist eine -very- schlechte Praxis.

bearbeiten:

static double myvar() { 
// todo: check if global L is init 
return lua_tonumber(L,1); 
} 

oder sogar dies: Statt konstante Variablen deklarieren Sie dies tun können Anwälte

static double myvar() { 
return 1.15; 
}