概述
for (int i = 0; i < c; i++)
{
const CSTradeDetail_Data::tItem &item=*(data[i]);//数据结构的定义
const QVariant cParas[] = { item.num, item.positionnum, item.m_OrderID, item.orderType,
item.merpCode, item.tradeTime, item.buyType, item.tradeNum, item.tradePrice,
item.holdPrice, item.oheNewLossP, item.oheNewProfitP, item.oheStopPrice,
item.remainNum, item.fee, item.openType, item.profit, item.profit,
item.banance, item.parttern, item.tradeType, item.udType, item.m_OrderUser,
item.m_OrderStrt, item.m_OrderID };//优化代码的QVariant定义
if ((codes.isEmpty() || codes.contains(item.merpCode)) &&
((openType == 0 || openType == 1) ? openType == item.openType : true))
{
// curHoldNum = ps.m_bType ? ps.m_dNumber : -ps.m_dNumber;
int itemp = 0;
lua_pushinteger(L, ++all);
lua_newtable(L);
for(int j=0;j<sizeof(cParas)/sizeof(cParas[0]);++j)
{
const QVariant &v=cParas[j];
if(v.type()==QVariant::String)
{
lua_pushinteger(L, ++itemp);
lua_pushstring(L, v.toString().toLocal8Bit().data());
lua_settable(L, -3);
}
else if(v.type()==QVariant::Double)
{
lua_pushinteger(L, ++itemp);
lua_pushnumber(L, v.toDouble());
lua_settable(L, -3);
}
else if(v.type()==QVariant::Int)
{
lua_pushinteger(L, ++itemp);
lua_pushnumber(L, v.toInt());
lua_settable(L, -3);
}
}
lua_getglobal(L, "MT");
lua_pushstring(L, "detailmeta");
lua_gettable(L, -2);
if (!lua_istable(L, -1))
{
Q_ASSERT(0);
lua_pop(L, 1);
}
else
{
lua_setmetatable(L, -3);
}
lua_pop(L, 1);
lua_settable(L, -3);
}
}
Q_ASSERT(lua_gettop(L) == top + 1);
return 1;
}
}
在这段C++与Lua脚本的交互代码中,当for循环里面定义了变量的时候,起初我遇到的问题是为什么在for循环里面不会有重复定义的冲突,因为每次循环都会定义变量item,
cParas两个变量,后面经过仔细思考发现在for循环里面C++的处理机制应该是每次循环结束的时候会清空for循环里面的局部变量。这和函数的调用是一样的,首先将函数压栈
然后每次函数调用结束都会使得函数出站,里面的所有局部变量也就销毁了,for循环也是如此
最后
以上就是无辜糖豆为你收集整理的笔记C++for循环内变量的定义的全部内容,希望文章能够帮你解决笔记C++for循环内变量的定义所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复