Я случайно написал что-то вроде этого:
int main( int nargs, char **args ) {
int i, j;
if ( i > 0 && NEAR( i-1, j ).dist == INFINITY )
{
NEAR( i-1, j ).dist = 1.0;
NEAR( i-1, j ).X = i;
NEAR( i-1, j ).Y = j;
newWorkPoints.push_back( IPoint( i-1, j ));
}
if ( j > 0 && NEAR( i, j-1 ).dist == INFINITY )
{
NEAR( i, j-1 ).dist = 1.0;
NEAR( i, j-1 ).X = i;
NEAR( i, j-1 ).Y = j;
newWorkPoints.push_back( IPoint( i, j-1 ));
}
if ( i < maxwid && NEAR( i+1, j ).dist == INFINITY )
{
NEAR( i+1, j ).dist = 1.0;
NEAR( i+1, j ).X = i;
NEAR( i+1, j ).Y = j;
newWorkPoints.push_back( IPoint( i+1, j ));
}
if ( j < maxheight && NEAR( i, j+1 ).dist == INFINITY )
{
NEAR( i, j+1 ).dist = 1.0;
NEAR( i, j+1 ).X = i;
NEAR( i, j+1 ).Y = j;
newWorkPoints.push_back( IPoint( i, j+1 ));
}
}
Когда я написал это, emacs (22.2.1 из 2010-03-30, Ubuntu) очень плохо отреагировал:
int main( int nargs, char **args ) {
int i, j;
if ( i > 0 && NEAR( i-1, j ).dist == INFINITY )
{
NEAR( i-1, j ).dist = 1.0;
NEAR( i-1, j ).X = i;
NEAR( i-1, j ).Y = j;
newWorkPoints.push_back( IPoint( i-1, j ));
}
if ( j > 0 && NEAR( i, j-1 ).dist == INFINITY )
{
NEAR( i, j-1 ).dist = 1.0;
NEAR( i, j-1 ).X = i;
NEAR( i, j-1 ).Y = j;
newWorkPoints.push_back( IPoint( i, j-1 ));
}
if ( i < maxwid && NEAR( i+1, j ).dist == INFINITY )
{
NEAR( i+1, j ).dist = 1.0;
NEAR( i+1, j ).X = i;
NEAR( i+1, j ).Y = j;
newWorkPoints.push_back( IPoint( i+1, j ));
}
if ( j < maxheight && NEAR( i, j+1 ).dist == INFINITY )
{
NEAR( i, j+1 ).dist = 1.0;
NEAR( i, j+1 ).X = i;
NEAR( i, j+1 ).Y = j;
newWorkPoints.push_back( IPoint( i, j+1 ));
}
}
Это проявление <в выражении, которое делает это. Это похоже на маловероятную ошибку! Я что-то не так делаю? </p>