Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C/C++에서 재진입 함수란 무엇입니까?

<시간/>

여기에서 우리는 C 또는 C++에서 재진입 함수가 무엇인지 볼 것입니다. 한 기능은 실행 과정에서 해당 기능을 중단하고 ISR(Interrupt Service Routine)을 처리한 다음 작업을 재개하는 규정이 있는 경우 재진입 기능이라고 합니다. 이러한 유형의 함수는 재귀, 하드웨어 인터럽트 처리와 같은 다양한 경우에 사용됩니다.

재진입 기능의 경우 몇 가지 속성이 있어야 합니다. 아래에 나열되어 있습니다 -

  • 이 유형의 함수는 전역 또는 정적 변수를 사용하지 않습니다. 제한은 없지만 일반적으로 권장되지 않습니다. 인터럽트가 전역 변수의 값을 변경할 수 있기 때문에 ISR에서 돌아온 후 함수는 새로운 값을 얻을 수 있고 결과가 다를 수 있습니다.

  • 재진입 함수는 자체 코드를 수정해서는 안 됩니다. 함수의 동작이 코드 전체에서 동일하게 유지되어야 합니다.

  • 또 다른 속성은 재진입 함수가 다른 비 재진입 함수를 호출해서는 안 된다는 것입니다.

예시

int x;
int my_function() {
   return x * 10;
}
int my_second_function() {
   return my_function() * 20;
}

여기서 이 두 함수는 재진입하지 않습니다. 첫 번째는 하나의 전역 변수를 사용하므로 재진입하지 않습니다. 두 번째는 하나의 비재진입 함수를 호출하므로 이 함수도 재진입 함수가 아닙니다.

예시

int my_function(int x) {
   return x * 10;
}
int my_second_function(int x) {
   return my_function(x) * 20;
}

이제 이 두 함수는 재진입 함수입니다.