클래스 (C++) 또는 모듈 (단일 C 파일)이 있다고 가정 해 보겠습니다. 다음 함수 중 하나에서 변수의 복사본을 저장하고 다음에 함수가 호출 될 때까지 값을 보유하려면 전역 (C++에서 개인이 될 수 있고 유지할 C에서 extern되지 않을 수 있습니다. 모듈 범위에서) 또는 로컬 정적 변수를 만드시겠습니까?지속 변수를 생성하려면 로컬 정적 변수 또는 전역 변수를 갖는 것이 더 낫습니다.
예컨대 :
void some_func_that_does_not_do_anything_useful(int arbVal)
{
static int lastArbVal = 0;
if (arbVal > lastArbVal)
{
lastArbVal = arbVal;
}
}
내가 정적 가능한 한 제한으로 그 범위를 유지하는 것입니다,하지만 내가 읽은 어떤 일이이를 위해 전역을 사용해야 제안 할 것입니다 이유는, 그래서 지금은 혼란 스러워요.
무엇이 가장 좋습니까 (있는 경우)?, 찬성/반대 하시겠습니까?
그 기능에서만 사용하고 다른 곳에서는 사용하지 않으면 '정적'으로 설정하는 것이 가장 좋은 해결책 일 수 있습니다. 정적 변수가 모든 스레드간에 공유되므로 멀티 스레딩과 같은 사례를 생각할 수도 있습니다. –
캡슐화를 위해 로컬 정적이 가장 좋습니다. 이것은 많은 C 함수가 취하는 접근법이기도합니다. 'strtok'이 떠오른다. – Adam
'strtok' man 페이지에서 인용하자면 : "절대 사용하지 마라." 이것을 어떻게 사용하는지에 대한 예제로 사용하지 않겠습니다 :-) –