Итак, при исследовании LCLosures я вижу, что он имеет тот же тип внешнего вида, что и CClosures, но дальше в прототипе есть upvalues, также хранящиеся внутри. 1004 *
typedef struct Proto {
CommonHeader;
TValue *k; /* constants used by the function */
Instruction *code;
struct Proto **p; /* functions defined inside the function */
int *lineinfo; /* map from opcodes to source lines */
struct LocVar *locvars; /* information about local variables */
TString **upvalues; /* upvalue names */
TString *source;
int sizeupvalues;
int sizek; /* size of `k' */
int sizecode;
int sizelineinfo;
int sizep; /* size of `p' */
int sizelocvars;
int linedefined;
int lastlinedefined;
GCObject *gclist;
lu_byte nups; /* number of upvalues */
lu_byte numparams;
lu_byte is_vararg;
lu_byte maxstacksize;
} Proto;
Мой вопрос: вы используете оба? Означают ли они разные вещи с точки зрения Lua? Я не смог найти хорошего объяснения. Поскольку функция lua_getupvalue не касается первой, она использует только повышающие значения в прототипе. Любая помощь будет принята с благодарностью.