我有以下代碼:警告:語句沒有效果(C++)
void CScriptTable::EnumReferences(asIScriptEngine *engine)
{
if (m_table)
{
// Call the gc enum callback for each nested table
size_t col = 0, row = 0, num_cols = m_table->numCols(), num_rows = m_table->numRows();
for(col; col < num_cols; col++) // Line 92
{
if (m_table->getColType(col) == COL_TABLE) {
for (row; row < num_rows; row++){ // Line 95
Table * tbl = m_table->getTable(row, col);
engine->GCEnumCallback(tbl);
}
}
}
}
}
編譯時,(G ++),警告(聲明沒有作用)被用於線路發出92 & 95(在所示上面的片段)
我看不出爲什麼他們沒有效果,即使我一直盯着它一段時間 - 可以用第二對眼睛做,看看他們能否發現我失蹤。 (?作爲小費也許)
分手了你的變量聲明。這條線是瘋狂的。爲什麼你在循環外部聲明瞭你的循環變量?不要這樣做。 –
你的代碼中有一個微妙的錯誤。在進入'col'循環之前'row'被設置爲0,並且之後永遠不會重置。因此,在外層('col')循環的第一次迭代中,你迭代了行,但對於所有其他迭代,你什麼都不做。請參閱@ b.buchhold的答案,它可以解決您的原始問題和這個錯誤...並學會盡可能在範圍內聲明您的變量。 –