링크 된 입자 목록이 있습니다. 나는이 입자들을 하나씩 움직이게 만들고 싶다. 그러기 위해서는 연결된 목록의 모든 입자를 반복해야하며, 마지막 입자에 도달하면 첫 번째 입자로 돌아가고 싶습니다. 하지만 제 프로그램은 그렇게하지 않습니다.링크 된 목록이 제대로 루핑되지 않음
int particle_update(struct particle **head){
struct particle *current = *head;
struct particle *next;
printf("particle_update\n");
while(current != NULL){
while(current != NULL && current->lifespan >=0){
current->lifespan --;
current->pos.y = current->pos.y + (current->spd.y * current->dir.y);
current->pos.x = current->pos.x + (current->spd.x * current->dir.x);
current->pos.z = current->pos.z + (current->spd.z * current->dir.z);
current = current->next;
if (current == NULL)
current = *head;
}
}
particle_destroy(head);
return 0;
}
큰
그래서 여기에 수술을 처리하기위한 더 나은 대안이다. ** ** 무엇을하고 있습니까? 그리고 문제를 디버깅하기 위해 무엇을 했습니까? –
나는 printf를 추가하여 루프가 멈추는 위치를 확인하고 lifespan = 1 일 때 멈추고 프로그램이 충돌합니다. 그것은 머리로 돌아 가지 않습니다. 이것은 if 문에 전혀 가지 않았 음을 의미합니다. – livelaughlove
다음 단계는 왜 추락했는지 확인하는 것입니다. 디버거에서 이것을 실행하여 알아 내야합니다. –