对于 for 语句,我有一些不明白的地方,在下面的代码块中,请专注于 ??? 评论:
void user_interface::execute_a_command( const string& cmd, command cmd_table[] )
{
LOG("user_interface::execute_a_command(): Executing \"",cmd,"\"");
bool command_executed = false;
//Exist any operation for this command?
command* elem = &cmd_table[ 0 ]; //???
for( int i = 0 ; cmd_table[ i ].function != nullptr ; i++, elem = &cmd_table[ i ] )
{
if( cmd == elem->name )
{
//Call the function
(this->*(elem->function))();
command_executed = true;
break;
}
}
好吧,这段代码编译得很好,没有具体的警告。但是,如果我将“elem”的声明和初始化放在“for”语句中,如下所示:
for( int i = 0 , command* elem = &cmd_table[ 0 ] ; cmd_table[ i ].function != nullptr ; i++, elem = &cmd_table[ i ] )
g++ 4.7.2 不编译此代码并出现此错误:
game.cpp:834:27:错误:''令牌之前的预期初始化程序game.cpp:834:27:错误:预期';' ' ' 标记之前
我不清楚为什么。有人可以帮我理解这里的问题吗?
谢谢